added sale-price
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,150 @@
|
||||
import { LoadingOutlined } from '@ant-design/icons-vue';
|
||||
import { M as Button, e as loading } from './server.mjs';
|
||||
import { defineComponent, h, useSlots, computed, mergeProps, unref, withCtx, createVNode, renderSlot, createCommentVNode, openBlock, createBlock, ref, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderClass, ssrRenderSlot, ssrRenderAttrs } from 'vue/server-renderer';
|
||||
import { b as baseButtonIconSize, u as usePrefix, i as icons } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { S as Spin } from './index-CO_xVqO1.mjs';
|
||||
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "BasicIcon",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
icon: {},
|
||||
color: { default: null },
|
||||
size: {}
|
||||
},
|
||||
setup(__props) {
|
||||
const props = __props;
|
||||
const { prefixCls } = usePrefix("icons");
|
||||
const tempIcon = ref();
|
||||
const refIcon = ref();
|
||||
tempIcon.value = icons[`${props.icon}`];
|
||||
const color = computed(() => {
|
||||
return props.color;
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<span${ssrRenderAttrs(mergeProps({
|
||||
ref_key: "refIcon",
|
||||
ref: refIcon,
|
||||
style: { color: color.value },
|
||||
class: [[unref(prefixCls)], "!flex"]
|
||||
}, _attrs))} data-v-3dec6a64>${tempIcon.value ?? ""}</span>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("components/BasicPacks/BasicIcon.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const BasicIcon = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$1, [["__scopeId", "data-v-3dec6a64"]]), { __name: "BasicPacksBasicIcon" });
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "BasicButton",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
icon: {},
|
||||
iconSize: { default: baseButtonIconSize },
|
||||
iconClass: { default: "" },
|
||||
suffixIcon: { type: Boolean },
|
||||
type: {},
|
||||
size: {},
|
||||
loading: { type: Boolean },
|
||||
curve: { type: Boolean, default: false }
|
||||
},
|
||||
setup(__props) {
|
||||
const indicator = h(LoadingOutlined, {
|
||||
style: {
|
||||
fontSize: "24px"
|
||||
},
|
||||
spin: true
|
||||
});
|
||||
const slot = useSlots();
|
||||
const _class = computed(() => {
|
||||
if (!slot.default) {
|
||||
return "!px-1 !py-1";
|
||||
}
|
||||
return "";
|
||||
});
|
||||
const _loading = computed(() => {
|
||||
if (props.loading) {
|
||||
return "flex";
|
||||
} else return "unset";
|
||||
});
|
||||
const { prefixCls } = usePrefix("main-button");
|
||||
const props = __props;
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_AButton = Button;
|
||||
const _component_ASpin = Spin;
|
||||
const _cssVars = { style: {
|
||||
"--0012da73": _loading.value
|
||||
} };
|
||||
_push(ssrRenderComponent(_component_AButton, mergeProps({
|
||||
type: props.type,
|
||||
size: props.size,
|
||||
class: [unref(prefixCls), _class.value, _ctx.curve ? "!rounded-full" : ""],
|
||||
disabled: "loading" in _ctx ? _ctx.loading : unref(loading)
|
||||
}, _attrs, _cssVars), {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(_component_ASpin, {
|
||||
spinning: "loading" in _ctx ? _ctx.loading : unref(loading),
|
||||
size: "small",
|
||||
class: "absolute",
|
||||
style: { "position-area": "center" },
|
||||
indicator: unref(indicator)
|
||||
}, null, _parent2, _scopeId));
|
||||
_push2(`<div class="${ssrRenderClass([[{ "flex-row-reverse": _ctx.suffixIcon }, ("loading" in _ctx ? _ctx.loading : unref(loading)) ? "op-30" : ""], "flex items-center gap-1 justify-center flex-row-reverse gap-2 py-1 px-2 w-full h-full transition-all text-xs"])}"${_scopeId}>`);
|
||||
if (_ctx.$slots.default) {
|
||||
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
||||
} else {
|
||||
_push2(`<!---->`);
|
||||
}
|
||||
if (_ctx.icon) {
|
||||
_push2(ssrRenderComponent(BasicIcon, {
|
||||
size: _ctx.iconSize,
|
||||
icon: _ctx.icon,
|
||||
class: _ctx.iconClass
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
_push2(`<!---->`);
|
||||
}
|
||||
_push2(`</div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode(_component_ASpin, {
|
||||
spinning: "loading" in _ctx ? _ctx.loading : unref(loading),
|
||||
size: "small",
|
||||
class: "absolute",
|
||||
style: { "position-area": "center" },
|
||||
indicator: unref(indicator)
|
||||
}, null, 8, ["spinning", "indicator"]),
|
||||
createVNode("div", {
|
||||
class: ["flex items-center gap-1 justify-center flex-row-reverse gap-2 py-1 px-2 w-full h-full transition-all text-xs", [{ "flex-row-reverse": _ctx.suffixIcon }, ("loading" in _ctx ? _ctx.loading : unref(loading)) ? "op-30" : ""]]
|
||||
}, [
|
||||
_ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("", true),
|
||||
_ctx.icon ? (openBlock(), createBlock(BasicIcon, {
|
||||
key: 1,
|
||||
size: _ctx.iconSize,
|
||||
icon: _ctx.icon,
|
||||
class: _ctx.iconClass
|
||||
}, null, 8, ["size", "icon", "class"])) : createCommentVNode("", true)
|
||||
], 2)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 3
|
||||
}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/BasicPacks/BasicButton.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const BasicButton = Object.assign(_sfc_main, { __name: "BasicPacksBasicButton" });
|
||||
|
||||
export { BasicButton as B };
|
||||
@@ -0,0 +1,91 @@
|
||||
import { defineComponent, useSlots, computed, mergeProps, unref, withCtx, createVNode, renderSlot, createCommentVNode, openBlock, createBlock, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderClass, ssrRenderSlot } from 'vue/server-renderer';
|
||||
import { b as baseButtonIconSize, B as BasicIconOld, u as usePrefix } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { M as Button } from './server.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "BasicButtonOld",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
icon: {},
|
||||
iconSize: { default: baseButtonIconSize },
|
||||
iconClass: { default: "" },
|
||||
suffixIcon: { type: Boolean },
|
||||
type: {},
|
||||
size: {},
|
||||
loading: { type: Boolean }
|
||||
},
|
||||
setup(__props) {
|
||||
const slot = useSlots();
|
||||
const _class = computed(() => {
|
||||
if (!slot.default) {
|
||||
return "!px-1 !py-1";
|
||||
}
|
||||
return "";
|
||||
});
|
||||
const _loading = computed(() => {
|
||||
if (props.loading) {
|
||||
return "flex";
|
||||
} else return "unset";
|
||||
});
|
||||
const { prefixCls } = usePrefix("main-button");
|
||||
const props = __props;
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_AButton = Button;
|
||||
const _cssVars = { style: {
|
||||
"--4c652d46": _loading.value
|
||||
} };
|
||||
_push(ssrRenderComponent(_component_AButton, mergeProps({
|
||||
type: props.type,
|
||||
size: props.size,
|
||||
class: [unref(prefixCls), _class.value],
|
||||
loading: props.loading
|
||||
}, _attrs, _cssVars), {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<div class="${ssrRenderClass([[{ "flex-row-reverse": _ctx.suffixIcon }], "flex items-center gap-1 justify-center flex-row-reverse gap-2 py-1 px-2"])}"${_scopeId}>`);
|
||||
if (_ctx.$slots.default) {
|
||||
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
||||
} else {
|
||||
_push2(`<!---->`);
|
||||
}
|
||||
if (_ctx.icon) {
|
||||
_push2(ssrRenderComponent(BasicIconOld, {
|
||||
size: _ctx.iconSize,
|
||||
icon: _ctx.icon,
|
||||
class: _ctx.iconClass
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
_push2(`<!---->`);
|
||||
}
|
||||
_push2(`</div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", {
|
||||
class: ["flex items-center gap-1 justify-center flex-row-reverse gap-2 py-1 px-2", [{ "flex-row-reverse": _ctx.suffixIcon }]]
|
||||
}, [
|
||||
_ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("", true),
|
||||
_ctx.icon ? (openBlock(), createBlock(BasicIconOld, {
|
||||
key: 1,
|
||||
size: _ctx.iconSize,
|
||||
icon: _ctx.icon,
|
||||
class: _ctx.iconClass
|
||||
}, null, 8, ["size", "icon", "class"])) : createCommentVNode("", true)
|
||||
], 2)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 3
|
||||
}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/BasicPacks/BasicButtonOld.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const BasicButtonOld = Object.assign(_sfc_main, { __name: "BasicPacksBasicButtonOld" });
|
||||
|
||||
export { BasicButtonOld as B };
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,119 @@
|
||||
import { defineComponent, computed, mergeProps, unref, createSlots, withCtx, renderSlot, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrInterpolate, ssrRenderComponent, ssrRenderSlot } from 'vue/server-renderer';
|
||||
import { u as usePrice } from './usePrice-CFcNV1RQ.mjs';
|
||||
import { u as usePrefix } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { _ as __nuxt_component_0, I as Input } from './index-D4HrLPqa.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "BasicInput",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
title: {},
|
||||
value: {},
|
||||
size: {},
|
||||
type: {},
|
||||
isPassword: { type: Boolean, default: false },
|
||||
inputmode: {},
|
||||
disabled: { type: Boolean },
|
||||
addonAfter: {},
|
||||
addonBefore: {},
|
||||
addonBgColor: {},
|
||||
addonTextColor: {},
|
||||
placeHolder: {}
|
||||
},
|
||||
emits: ["update:value", "onchange"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
computed(() => props.addonBgColor);
|
||||
computed(() => props.addonTextColor);
|
||||
const localValue = computed({
|
||||
set(value) {
|
||||
props.type === "price" ? emits("update:value", value?.toString().replaceAll(",", "")) : emits("update:value", value);
|
||||
},
|
||||
get() {
|
||||
let a = props.type === "price" ? props.value ? usePrice(props.value, true, "").trim() : "" : props.value;
|
||||
return a;
|
||||
}
|
||||
});
|
||||
const props = __props;
|
||||
const emits = __emit;
|
||||
const handlerChange = (e) => {
|
||||
props.type === "price" ? emits("update:value", e.target.value?.toString().replaceAll(",", "")) : emits("update:value", e.target.value);
|
||||
props.type === "price" ? emits("onchange", e.target.value?.toString().replaceAll(",", "")) : emits("onchange", e.target.value);
|
||||
};
|
||||
const { prefixCls } = usePrefix("input");
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_a_input_password = __nuxt_component_0;
|
||||
const _component_a_input = Input;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: [unref(prefixCls)]
|
||||
}, _attrs))}><div>${ssrInterpolate(props.title)}</div>`);
|
||||
if (_ctx.isPassword) {
|
||||
_push(ssrRenderComponent(_component_a_input_password, {
|
||||
value: localValue.value,
|
||||
"onUpdate:value": ($event) => localValue.value = $event,
|
||||
"addon-after": props.addonAfter,
|
||||
"addon-before": props.addonBefore,
|
||||
disabled: props.disabled,
|
||||
placeHolder: props.placeHolder,
|
||||
size: props.size,
|
||||
type: props.type,
|
||||
class: "",
|
||||
autocomplete: false,
|
||||
onChange: handlerChange
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(ssrRenderComponent(_component_a_input, {
|
||||
value: localValue.value,
|
||||
"onUpdate:value": ($event) => localValue.value = $event,
|
||||
"addon-after": props.addonAfter,
|
||||
"addon-before": props.addonBefore,
|
||||
disabled: props.disabled,
|
||||
placeHolder: props.placeHolder,
|
||||
size: props.size,
|
||||
inputmode: props.inputmode,
|
||||
autocomplete: false,
|
||||
type: props.type === "price" ? "tel" : props.type,
|
||||
class: "",
|
||||
onChange: handlerChange
|
||||
}, createSlots({ _: 2 }, [
|
||||
_ctx.$slots.addonBefore ? {
|
||||
name: "addonBefore",
|
||||
fn: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
ssrRenderSlot(_ctx.$slots, "addonBefore", {}, null, _push2, _parent2, _scopeId);
|
||||
} else {
|
||||
return [
|
||||
renderSlot(_ctx.$slots, "addonBefore")
|
||||
];
|
||||
}
|
||||
}),
|
||||
key: "0"
|
||||
} : void 0,
|
||||
_ctx.$slots.addonAfter ? {
|
||||
name: "addonAfter",
|
||||
fn: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
ssrRenderSlot(_ctx.$slots, "addonAfter", {}, null, _push2, _parent2, _scopeId);
|
||||
} else {
|
||||
return [
|
||||
renderSlot(_ctx.$slots, "addonAfter")
|
||||
];
|
||||
}
|
||||
}),
|
||||
key: "1"
|
||||
} : void 0
|
||||
]), _parent));
|
||||
}
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/BasicPacks/BasicInput.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const BasicInput = Object.assign(_sfc_main, { __name: "BasicPacksBasicInput" });
|
||||
|
||||
export { BasicInput as B };
|
||||
@@ -0,0 +1,164 @@
|
||||
import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import _extends from '@babel/runtime/helpers/esm/extends';
|
||||
import { defineComponent, ref, watch, createVNode } from 'vue';
|
||||
import { A as classNames, Q as initDefaultProps, P as PropTypes } from './server.mjs';
|
||||
|
||||
var __rest = function(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
const checkboxProps = {
|
||||
prefixCls: String,
|
||||
name: String,
|
||||
id: String,
|
||||
type: String,
|
||||
defaultChecked: {
|
||||
type: [Boolean, Number],
|
||||
default: void 0
|
||||
},
|
||||
checked: {
|
||||
type: [Boolean, Number],
|
||||
default: void 0
|
||||
},
|
||||
disabled: Boolean,
|
||||
tabindex: {
|
||||
type: [Number, String]
|
||||
},
|
||||
readonly: Boolean,
|
||||
autofocus: Boolean,
|
||||
value: PropTypes.any,
|
||||
required: Boolean
|
||||
};
|
||||
const VcCheckbox = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "Checkbox",
|
||||
inheritAttrs: false,
|
||||
props: initDefaultProps(checkboxProps, {
|
||||
prefixCls: "rc-checkbox",
|
||||
type: "checkbox",
|
||||
defaultChecked: false
|
||||
}),
|
||||
emits: ["click", "change"],
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
emit,
|
||||
expose
|
||||
} = _ref;
|
||||
const checked = ref(props.checked === void 0 ? props.defaultChecked : props.checked);
|
||||
const inputRef = ref();
|
||||
watch(() => props.checked, () => {
|
||||
checked.value = props.checked;
|
||||
});
|
||||
expose({
|
||||
focus() {
|
||||
var _a;
|
||||
(_a = inputRef.value) === null || _a === void 0 ? void 0 : _a.focus();
|
||||
},
|
||||
blur() {
|
||||
var _a;
|
||||
(_a = inputRef.value) === null || _a === void 0 ? void 0 : _a.blur();
|
||||
}
|
||||
});
|
||||
const eventShiftKey = ref();
|
||||
const handleChange = (e) => {
|
||||
if (props.disabled) {
|
||||
return;
|
||||
}
|
||||
if (props.checked === void 0) {
|
||||
checked.value = e.target.checked;
|
||||
}
|
||||
e.shiftKey = eventShiftKey.value;
|
||||
const eventObj = {
|
||||
target: _extends(_extends({}, props), {
|
||||
checked: e.target.checked
|
||||
}),
|
||||
stopPropagation() {
|
||||
e.stopPropagation();
|
||||
},
|
||||
preventDefault() {
|
||||
e.preventDefault();
|
||||
},
|
||||
nativeEvent: e
|
||||
};
|
||||
if (props.checked !== void 0) {
|
||||
inputRef.value.checked = !!props.checked;
|
||||
}
|
||||
emit("change", eventObj);
|
||||
eventShiftKey.value = false;
|
||||
};
|
||||
const onClick = (e) => {
|
||||
emit("click", e);
|
||||
eventShiftKey.value = e.shiftKey;
|
||||
};
|
||||
return () => {
|
||||
const {
|
||||
prefixCls,
|
||||
name,
|
||||
id,
|
||||
type,
|
||||
disabled,
|
||||
readonly,
|
||||
tabindex,
|
||||
autofocus,
|
||||
value,
|
||||
required
|
||||
} = props, others = __rest(props, ["prefixCls", "name", "id", "type", "disabled", "readonly", "tabindex", "autofocus", "value", "required"]);
|
||||
const {
|
||||
class: className,
|
||||
onFocus,
|
||||
onBlur,
|
||||
onKeydown,
|
||||
onKeypress,
|
||||
onKeyup
|
||||
} = attrs;
|
||||
const othersAndAttrs = _extends(_extends({}, others), attrs);
|
||||
const globalProps = Object.keys(othersAndAttrs).reduce((prev, key) => {
|
||||
if (key.startsWith("data-") || key.startsWith("aria-") || key === "role") {
|
||||
prev[key] = othersAndAttrs[key];
|
||||
}
|
||||
return prev;
|
||||
}, {});
|
||||
const classString = classNames(prefixCls, className, {
|
||||
[`${prefixCls}-checked`]: checked.value,
|
||||
[`${prefixCls}-disabled`]: disabled
|
||||
});
|
||||
const inputProps = _extends(_extends({
|
||||
name,
|
||||
id,
|
||||
type,
|
||||
readonly,
|
||||
disabled,
|
||||
tabindex,
|
||||
class: `${prefixCls}-input`,
|
||||
checked: !!checked.value,
|
||||
autofocus,
|
||||
value
|
||||
}, globalProps), {
|
||||
onChange: handleChange,
|
||||
onClick,
|
||||
onFocus,
|
||||
onBlur,
|
||||
onKeydown,
|
||||
onKeypress,
|
||||
onKeyup,
|
||||
required
|
||||
});
|
||||
return createVNode("span", {
|
||||
"class": classString
|
||||
}, [createVNode("input", _objectSpread({
|
||||
"ref": inputRef
|
||||
}, inputProps), null), createVNode("span", {
|
||||
"class": `${prefixCls}-inner`
|
||||
}, null)]);
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
export { VcCheckbox as V };
|
||||
@@ -0,0 +1,207 @@
|
||||
import { defineComponent, ref, computed, mergeProps, withCtx, unref, createTextVNode, toDisplayString, watch, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { B as BasicButton } from './BasicButton-7YIRCRg8.mjs';
|
||||
import { a as useConfigStore, _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { CircleStencil } from 'vue-advanced-cropper';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "PictureEditor",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
src: {},
|
||||
aspectRatio: { default: 1 },
|
||||
initialSize: {},
|
||||
round: { type: Boolean, default: false },
|
||||
movable: { type: Boolean, default: true },
|
||||
resizable: { type: Boolean, default: true },
|
||||
outputSize: {},
|
||||
quality: { default: 0.92 },
|
||||
mime: { default: "image/jpeg" }
|
||||
},
|
||||
emits: ["onCropped"],
|
||||
setup(__props, { expose: __expose, emit: __emit }) {
|
||||
const props = __props;
|
||||
const emit = __emit;
|
||||
const cropperRef = ref(null);
|
||||
function needsCacheBust(u) {
|
||||
if (!u) return false;
|
||||
const lower = u.toLowerCase();
|
||||
return lower.startsWith("http://") || lower.startsWith("https://");
|
||||
}
|
||||
computed(() => {
|
||||
const src = props.src ?? "";
|
||||
if (!needsCacheBust(src)) return src;
|
||||
const sep = src.includes("?") ? "&" : "?";
|
||||
return `${src}${sep}cb=${Date.now()}`;
|
||||
});
|
||||
computed(() => props.round ? CircleStencil : void 0);
|
||||
computed(() => {
|
||||
if (props.initialSize == null) return void 0;
|
||||
if (typeof props.initialSize === "number") {
|
||||
return { width: props.initialSize, height: props.initialSize };
|
||||
}
|
||||
return props.initialSize;
|
||||
});
|
||||
const forceKey = ref(0);
|
||||
watch(() => [props.aspectRatio, props.round], () => {
|
||||
forceKey.value++;
|
||||
});
|
||||
function getOutputSize() {
|
||||
if (props.outputSize == null) return void 0;
|
||||
if (typeof props.outputSize === "number") {
|
||||
return { width: props.outputSize, height: props.outputSize };
|
||||
}
|
||||
return props.outputSize;
|
||||
}
|
||||
function crop() {
|
||||
const c = cropperRef.value;
|
||||
if (!c) return;
|
||||
const size = getOutputSize() ?? void 0;
|
||||
const result = c.getResult({
|
||||
size,
|
||||
mime: props.mime,
|
||||
quality: props.quality
|
||||
});
|
||||
if (result?.canvas) {
|
||||
emit("onCropped", result.canvas.toDataURL(props.mime, props.quality));
|
||||
}
|
||||
}
|
||||
function setStencilSize(width, height) {
|
||||
forceKey.value++;
|
||||
}
|
||||
__expose({ crop, setStencilSize });
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "cropper-wrapper" }, _attrs))}>`);
|
||||
_push(ssrRenderComponent(_component_ClientOnly, null, {}, _parent));
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("components/PictureEditor.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const PictureEditor = Object.assign(_sfc_main$1, { __name: "PictureEditor" });
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "CropperModal",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
visible: { type: Boolean },
|
||||
img: {},
|
||||
mode: {},
|
||||
fixedMovable: { type: Boolean },
|
||||
resizable: { type: Boolean },
|
||||
aspectRatio: {},
|
||||
initialSize: {},
|
||||
round: { type: Boolean },
|
||||
outputSize: {},
|
||||
mime: {},
|
||||
quality: {}
|
||||
},
|
||||
emits: ["update:visible", "cropped"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
const props = __props;
|
||||
const emit = __emit;
|
||||
const config = useConfigStore();
|
||||
const cropper = ref(null);
|
||||
const open = computed({
|
||||
get: () => props.visible,
|
||||
set: (val) => emit("update:visible", val)
|
||||
});
|
||||
const aspectRatio = computed(() => props.aspectRatio ?? null);
|
||||
const initialSize = computed(() => {
|
||||
return props.mode === "fixed" ? props.initialSize ?? 340 : void 0;
|
||||
});
|
||||
const round = computed(() => props.round ?? false);
|
||||
const outputSize = computed(() => props.outputSize ?? 400);
|
||||
const mime = computed(() => props.mime ?? "image/jpeg");
|
||||
const quality = computed(() => props.quality ?? 0.92);
|
||||
const isResizable = computed(() => {
|
||||
if (typeof props.resizable === "boolean") return props.resizable;
|
||||
return (props.mode ?? "free") !== "fixed";
|
||||
});
|
||||
const isMovable = computed(() => {
|
||||
if ((props.mode ?? "free") === "fixed") {
|
||||
return props.fixedMovable;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
function onCropped(val) {
|
||||
emit("cropped", val);
|
||||
open.value = false;
|
||||
}
|
||||
function handleSave() {
|
||||
cropper.value?.crop();
|
||||
}
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
if (open.value && _ctx.img) {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "fixed inset-0 z-1000 backdrop-blur-md bg-black/80 p-2" }, _attrs))} data-v-cbfb9555><div class="w-full" data-v-cbfb9555>`);
|
||||
_push(ssrRenderComponent(PictureEditor, {
|
||||
ref_key: "cropper",
|
||||
ref: cropper,
|
||||
class: "h-90vh absolute top-0 right-0 left-0 sm:right-auto sm:left-auto w-full sm:w-fit sm:justify-self-center",
|
||||
src: _ctx.img,
|
||||
initialSize: initialSize.value,
|
||||
round: round.value,
|
||||
resizable: isResizable.value,
|
||||
movable: isMovable.value,
|
||||
aspectRatio: aspectRatio.value,
|
||||
outputSize: outputSize.value,
|
||||
mime: mime.value,
|
||||
quality: quality.value,
|
||||
onOnCropped: onCropped
|
||||
}, null, _parent));
|
||||
_push(`</div><div class="p-2 absolute bottom-0 right-0 left-0 grid gap-2 gap-2 sm:w-50vw sm:justify-self-center sm:flex" data-v-cbfb9555>`);
|
||||
_push(ssrRenderComponent(BasicButton, {
|
||||
block: "",
|
||||
onClick: handleSave,
|
||||
type: "primary"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("submit"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("submit")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(ssrRenderComponent(BasicButton, {
|
||||
block: "",
|
||||
danger: "",
|
||||
onClick: ($event) => open.value = false,
|
||||
class: "sm:!w-3/4"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("close"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("close")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/CropperModal.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_3 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main, [["__scopeId", "data-v-cbfb9555"]]), { __name: "CropperModal" });
|
||||
|
||||
export { __nuxt_component_3 as _ };
|
||||
@@ -0,0 +1,155 @@
|
||||
import { defineComponent, mergeProps, unref, withCtx, createTextVNode, toDisplayString, ref, reactive, createVNode, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { U as UserProfilePic } from './UserProfilePic-CSSFM-Xe.mjs';
|
||||
import { B as BasicButton } from './BasicButton-7YIRCRg8.mjs';
|
||||
import { u as useRouter$1, a as useConfigStore, q as useElementSize, aW as baseConfirmWithId, aX as deleteUser } from './server.mjs';
|
||||
import { ContentLoader } from 'vue-content-loader';
|
||||
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "CustomerCard",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
user: {}
|
||||
},
|
||||
emits: ["refresh"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
const router = useRouter$1();
|
||||
const props = __props;
|
||||
const config = useConfigStore();
|
||||
const emits = __emit;
|
||||
async function handlerConfirmDeleteUser() {
|
||||
await baseConfirmWithId(config.useString("areYouSureToDeleteThisUser"), props.user.id ?? "", deleteUser, () => emits("refresh"));
|
||||
}
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "flex justify-between items-center" }, _attrs))}><div class="flex gap-4 items-center">`);
|
||||
_push(ssrRenderComponent(UserProfilePic, {
|
||||
width: "60",
|
||||
src: _ctx.user.avatar,
|
||||
"just-show-profile": ""
|
||||
}, null, _parent));
|
||||
_push(`<div><div class="text-sm font-400">${ssrInterpolate(_ctx.user.name)}</div><div class="text-sm text-gray">${ssrInterpolate(_ctx.user.infoText)}</div></div></div>`);
|
||||
if (unref(config).isSeller) {
|
||||
_push(`<div class="w-1/4 my1">`);
|
||||
_push(ssrRenderComponent(BasicButton, {
|
||||
class: "!h-7 w-full",
|
||||
onClick: ($event) => unref(router).push({ name: "user-edit-id", params: { id: _ctx.user.id } })
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("edit"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("edit")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(ssrRenderComponent(BasicButton, {
|
||||
class: "!h-7 w-full border-red text-red mt1",
|
||||
onClick: handlerConfirmDeleteUser
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("delete"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("delete")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(ssrRenderComponent(BasicButton, { class: "!h-7 w-1/4" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("details"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("details")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
}
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("components/Cards/CustomerCard.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const CustomerCard = Object.assign(_sfc_main$1, { __name: "CardsCustomerCard" });
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "CustomerCardSkeleton",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const isLoaded = ref(false);
|
||||
const skeletonRatio = ref(null);
|
||||
const skeletonSize = reactive(
|
||||
useElementSize(skeletonRatio, { width: 0, height: 0 }, { box: "border-box" })
|
||||
);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
if (isLoaded.value) {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
ref_key: "skeletonRatio",
|
||||
ref: skeletonRatio,
|
||||
class: "h-fit"
|
||||
}, _attrs))}>`);
|
||||
_push(ssrRenderComponent(unref(ContentLoader), {
|
||||
width: skeletonSize.width,
|
||||
height: "70"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<circle cx="30" cy="30" r="30"${_scopeId}></circle><rect x="80" y="20" rx="3" ry="3" width="170" height="20"${_scopeId}></rect><rect${ssrRenderAttr("x", skeletonSize.width - 80)} y="15" rx="3" ry="3" width="80" height="30"${_scopeId}></rect>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("circle", {
|
||||
cx: "30",
|
||||
cy: "30",
|
||||
r: "30"
|
||||
}),
|
||||
createVNode("rect", {
|
||||
x: "80",
|
||||
y: "20",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: "170",
|
||||
height: "20"
|
||||
}),
|
||||
createVNode("rect", {
|
||||
x: skeletonSize.width - 80,
|
||||
y: "15",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: "80",
|
||||
height: "30"
|
||||
}, null, 8, ["x"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Cards/CustomerCardSkeleton.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const CustomerCardSkeleton = Object.assign(_sfc_main, { __name: "CardsCustomerCardSkeleton" });
|
||||
|
||||
export { CustomerCard as C, CustomerCardSkeleton as a };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,82 @@
|
||||
import { computed, ref, getCurrentInstance, watch, provide, inject, defineComponent } from 'vue';
|
||||
import { O as createContext } from './server.mjs';
|
||||
|
||||
const ContextKey = /* @__PURE__ */ Symbol("ContextProps");
|
||||
const InternalContextKey = /* @__PURE__ */ Symbol("InternalContextProps");
|
||||
const useProvideFormItemContext = function(props) {
|
||||
let useValidation = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : computed(() => true);
|
||||
const formItemFields = ref(/* @__PURE__ */ new Map());
|
||||
const addFormItemField = (key, type) => {
|
||||
formItemFields.value.set(key, type);
|
||||
formItemFields.value = new Map(formItemFields.value);
|
||||
};
|
||||
const removeFormItemField = (key) => {
|
||||
formItemFields.value.delete(key);
|
||||
formItemFields.value = new Map(formItemFields.value);
|
||||
};
|
||||
getCurrentInstance();
|
||||
watch([useValidation, formItemFields], () => {
|
||||
});
|
||||
provide(ContextKey, props);
|
||||
provide(InternalContextKey, {
|
||||
addFormItemField,
|
||||
removeFormItemField
|
||||
});
|
||||
};
|
||||
const defaultContext = {
|
||||
id: computed(() => void 0),
|
||||
onFieldBlur: () => {
|
||||
},
|
||||
onFieldChange: () => {
|
||||
},
|
||||
clearValidate: () => {
|
||||
}
|
||||
};
|
||||
const defaultInternalContext = {
|
||||
addFormItemField: () => {
|
||||
},
|
||||
removeFormItemField: () => {
|
||||
}
|
||||
};
|
||||
const useInjectFormItemContext = () => {
|
||||
const internalContext = inject(InternalContextKey, defaultInternalContext);
|
||||
const formItemFieldKey = /* @__PURE__ */ Symbol("FormItemFieldKey");
|
||||
const instance = getCurrentInstance();
|
||||
internalContext.addFormItemField(formItemFieldKey, instance.type);
|
||||
provide(InternalContextKey, defaultInternalContext);
|
||||
provide(ContextKey, defaultContext);
|
||||
return inject(ContextKey, defaultContext);
|
||||
};
|
||||
const FormItemRest = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "AFormItemRest",
|
||||
setup(_, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
provide(InternalContextKey, defaultInternalContext);
|
||||
provide(ContextKey, defaultContext);
|
||||
return () => {
|
||||
var _a;
|
||||
return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);
|
||||
};
|
||||
}
|
||||
});
|
||||
const FormItemInputContext = createContext({});
|
||||
const NoFormStatus = defineComponent({
|
||||
name: "NoFormStatus",
|
||||
setup(_, _ref2) {
|
||||
let {
|
||||
slots
|
||||
} = _ref2;
|
||||
FormItemInputContext.useProvide({});
|
||||
return () => {
|
||||
var _a;
|
||||
return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
export { FormItemInputContext as F, NoFormStatus as N, FormItemRest as a, useProvideFormItemContext as b, useInjectFormItemContext as u };
|
||||
@@ -0,0 +1,370 @@
|
||||
import { defineComponent, ref, computed, watchEffect, watch, nextTick, resolveDirective, mergeProps, unref, withCtx, createVNode, withDirectives, openBlock, createBlock, withModifiers, Fragment, renderList, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderList, ssrRenderComponent, ssrGetDirectiveProps, ssrInterpolate, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { B as BasicInput } from './BasicInput-CgQV_gT5.mjs';
|
||||
import { u as useRouter$1, a as useConfigStore, aB as useSwipe, b as useUserStore, q as useElementSize } from './server.mjs';
|
||||
import { _ as _sfc_main$2 } from './like-D4L8S2C_.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { B as BasicButton } from './BasicButton-7YIRCRg8.mjs';
|
||||
import { B as BasicIconOld } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { Swiper, SwiperSlide } from 'swiper/vue';
|
||||
import { EffectCreative } from 'swiper/modules';
|
||||
import { u as useMediaStore } from './media-Cj7oyS0P.mjs';
|
||||
import { e as empty_user } from './empty_user-DSxcM_ac.mjs';
|
||||
import { u as userViewStory, s as setStorySeenLocal } from './media-CiMHc-Ka.mjs';
|
||||
|
||||
const intervalError = "[nuxt] `setInterval` should not be used on the server. Consider wrapping it with an `onNuxtReady`, `onBeforeMount` or `onMounted` lifecycle hook, or ensure you only call it in the browser by checking `false`.";
|
||||
const setInterval = (() => {
|
||||
console.error(intervalError);
|
||||
});
|
||||
const _imports_0 = "data:image/svg+xml,%3c?xml%20version='1.0'?%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='%233797EF'%20viewBox='0%200%2024%2024'%20width='24px'%20height='24px'%3e%3cpath%20d='M12,2C6.477,2,2,6.477,2,12s4.477,10,10,10s10-4.477,10-10S17.523,2,12,2z%20M16,13h-3v3c0,0.552-0.448,1-1,1h0%20c-0.552,0-1-0.448-1-1v-3H8c-0.552,0-1-0.448-1-1v0c0-0.552,0.448-1,1-1h3V8c0-0.552,0.448-1,1-1h0c0.552,0,1,0.448,1,1v3h3%20c0.552,0,1,0.448,1,1v0C17,12.552,16.552,13,16,13z'/%3e%3c/svg%3e";
|
||||
const _imports_1 = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20fill='none'%20viewBox='0%200%2024%2024'%20id='instagram-highlight-story'%3e%3cpath%20fill='%23fff'%20fill-rule='evenodd'%20d='M12.1213%207.40686C10.6607%206.40269%208.64684%206.54986%207.34835%207.84835%205.88388%209.31282%205.88388%2011.6872%207.34835%2013.1517L11.591%2017.3943C11.7316%2017.5349%2011.9224%2017.614%2012.1213%2017.614%2012.3202%2017.614%2012.511%2017.5349%2012.6517%2017.3943L16.8943%2013.1517C18.3588%2011.6872%2018.3588%209.31282%2016.8943%207.84835%2015.5958%206.54986%2013.582%206.40269%2012.1213%207.40686zM11.591%208.90901C10.7123%208.03033%209.28769%208.03033%208.40901%208.90901%207.53033%209.78769%207.53033%2011.2123%208.40901%2012.091L12.1213%2015.8033%2015.8336%2012.091C16.7123%2011.2123%2016.7123%209.78769%2015.8336%208.90901%2014.955%208.03033%2013.5303%208.03033%2012.6517%208.90901%2012.3588%209.2019%2011.8839%209.2019%2011.591%208.90901zM10.2263%202.128C10.3296%202.52914%2010.0881%202.93802%209.68694%203.04127%209.19056%203.16903%208.7103%203.33698%208.24979%203.54149%207.87123%203.7096%207.42806%203.539%207.25994%203.16044%207.09183%202.78187%207.26243%202.3387%207.64099%202.17059%208.17667%201.9327%208.73547%201.73727%209.31306%201.58861%209.7142%201.48537%2010.1231%201.72686%2010.2263%202.128zM5.75633%204.15238C6.03781%204.45625%206.01966%204.93078%205.71579%205.21226%204.97148%205.90172%204.34093%206.71184%203.85525%207.61113%203.65841%207.97559%203.2034%208.11148%202.83894%207.91464%202.47448%207.71781%202.33859%207.26279%202.53543%206.89834%203.1%205.85298%203.83243%204.91218%204.69645%204.11183%205.00032%203.83035%205.47485%203.8485%205.75633%204.15238zM2.25612%209.61903C2.66481%209.6865%202.94142%2010.0725%202.87396%2010.4812%202.79247%2010.9748%202.75%2011.4821%202.75%2011.9999%202.75%2012.5177%202.79247%2013.025%202.87396%2013.5186%202.94142%2013.9273%202.66481%2014.3133%202.25612%2014.3808%201.84744%2014.4482%201.46145%2014.1716%201.39399%2013.7629%201.29922%2013.1888%201.25%2012.5998%201.25%2011.9999%201.25%2011.4%201.29922%2010.811%201.39399%2010.2369%201.46145%209.82819%201.84744%209.55157%202.25612%209.61903zM2.83894%2016.0851C3.2034%2015.8883%203.65841%2016.0242%203.85525%2016.3887%204.34093%2017.288%204.97147%2018.0981%205.71578%2018.7875%206.01966%2019.069%206.03781%2019.5435%205.75633%2019.8474%205.47485%2020.1513%205.00032%2020.1694%204.69644%2019.888%203.83243%2019.0876%203.1%2018.1468%202.53543%2017.1015%202.33859%2016.737%202.47448%2016.282%202.83894%2016.0851zM7.25994%2020.8394C7.42805%2020.4608%207.87122%2020.2902%208.24979%2020.4583%208.7103%2020.6628%209.19056%2020.8308%209.68694%2020.9585%2010.0881%2021.0618%2010.3296%2021.4707%2010.2263%2021.8718%2010.1231%2022.2729%209.7142%2022.5144%209.31306%2022.4112%208.73547%2022.2625%208.17667%2022.0671%207.64099%2021.8292%207.26243%2021.6611%207.09183%2021.2179%207.25994%2020.8394z'%20clip-rule='evenodd'%3e%3c/path%3e%3cpath%20fill='%23fff'%20fill-rule='evenodd'%20d='M11.25%202C11.25%201.58579%2011.5858%201.25%2012%201.25C17.9371%201.25%2022.75%206.06294%2022.75%2012C22.75%2012.4142%2022.4142%2012.75%2022%2012.75C21.5858%2012.75%2021.25%2012.4142%2021.25%2012C21.25%206.89137%2017.1086%202.75%2012%202.75C11.5858%202.75%2011.25%202.41421%2011.25%202ZM21.4682%2015.3127C21.8478%2015.4786%2022.021%2015.9207%2021.8552%2016.3003C20.197%2020.0954%2016.4094%2022.75%2012%2022.75C11.5858%2022.75%2011.25%2022.4142%2011.25%2022C11.25%2021.5858%2011.5858%2021.25%2012%2021.25C15.7919%2021.25%2019.0526%2018.9682%2020.4806%2015.6997C20.6465%2015.3202%2021.0886%2015.1469%2021.4682%2015.3127Z'%20clip-rule='evenodd'%3e%3c/path%3e%3c/svg%3e";
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "CustomProgressBar",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
percent: { type: Number, required: true },
|
||||
barHeight: { type: Number, default: 2 },
|
||||
rtl: { type: Boolean, default: false }
|
||||
},
|
||||
setup(__props) {
|
||||
const el = ref(null);
|
||||
const { width } = useElementSize(el);
|
||||
const props = __props;
|
||||
const containerWidth = ref(0);
|
||||
watchEffect(() => {
|
||||
if (width.value > 0) containerWidth.value = width.value;
|
||||
});
|
||||
const key = ref(0);
|
||||
const progressWidth = computed(
|
||||
() => containerWidth.value * Math.min(Math.max(props.percent, 0), 100) / 100
|
||||
);
|
||||
const rtlTransform = computed(
|
||||
() => props.rtl ? `translate(${containerWidth.value},0) scale(-1,1)` : void 0
|
||||
);
|
||||
watch(progressWidth, () => {
|
||||
if (props.percent === 100 || props.percent === 0) {
|
||||
key.value++;
|
||||
}
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
ref_key: "el",
|
||||
ref: el,
|
||||
class: "progress-container"
|
||||
}, _attrs))} data-v-9b1dc5d5>`);
|
||||
if (containerWidth.value > 0) {
|
||||
_push(`<svg${ssrRenderAttr("width", containerWidth.value)}${ssrRenderAttr("height", __props.barHeight)}${ssrRenderAttr("viewBox", `0 0 ${containerWidth.value} ${__props.barHeight}`)} class="progress-bar" data-v-9b1dc5d5><rect x="0" y="0"${ssrRenderAttr("width", containerWidth.value)}${ssrRenderAttr("height", __props.barHeight)} fill="rgba(255,255,255,0.3)" rx="1" ry="1" data-v-9b1dc5d5></rect><g${ssrRenderAttr("transform", rtlTransform.value)} data-v-9b1dc5d5><rect x="0" y="0"${ssrRenderAttr("width", progressWidth.value)}${ssrRenderAttr("height", __props.barHeight)} fill="white" rx="1" ry="1" class="progress-fill" data-v-9b1dc5d5></rect></g></svg>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("views/base/pages/home/components/CustomProgressBar.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const CustomProgressBar = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-9b1dc5d5"]]);
|
||||
const img_gif = "" + __buildAssetsURL("story_loading.Cuvmkir-.gif");
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "FullScreenStories",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
id: {},
|
||||
specifyId: { type: Boolean, default: false }
|
||||
},
|
||||
emits: ["update:id"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
useRouter$1();
|
||||
const swiperRef = ref(null);
|
||||
const modules = [EffectCreative];
|
||||
const indexStory = ref(0);
|
||||
const playingSlide = ref(0);
|
||||
const storySlides = ref(0);
|
||||
const message = ref("");
|
||||
const config = useConfigStore();
|
||||
const props = __props;
|
||||
const emits = __emit;
|
||||
const progress = ref([]);
|
||||
const target = ref(null);
|
||||
const { direction, isSwiping } = useSwipe(target);
|
||||
const sendMessageState = ref(false);
|
||||
const userStory = computed(() => {
|
||||
if (props.specifyId) {
|
||||
return mediaStore.users.find((x) => x.id === props.id);
|
||||
} else {
|
||||
return mediaStore.users[indexStory.value];
|
||||
}
|
||||
});
|
||||
let interval = void 0;
|
||||
const mediaStore = useMediaStore();
|
||||
const userStore = useUserStore();
|
||||
const isPaused = ref(false);
|
||||
const storyOwner = computed(() => config.isSeller && userStore.user?.id === userStory.value?.id);
|
||||
watchEffect(() => {
|
||||
if (isSwiping.value && direction.value === "down") {
|
||||
emits("update:id", void 0);
|
||||
}
|
||||
});
|
||||
watch(indexStory, async (n) => {
|
||||
await indexHandle();
|
||||
});
|
||||
async function indexHandle() {
|
||||
storySlides.value = userStory.value?.stories.length;
|
||||
progress.value = [];
|
||||
await nextTick();
|
||||
if (swiperRef.value) swiperRef.value.activeIndex = indexStory.value;
|
||||
for (let i = 0; i < storySlides.value; i++) {
|
||||
progress.value.push(0);
|
||||
}
|
||||
stopInterval();
|
||||
startOver();
|
||||
}
|
||||
const onSwiper = (swiper) => {
|
||||
swiperRef.value = swiper;
|
||||
};
|
||||
const onSlideChange = (val) => {
|
||||
playingSlide.value = 0;
|
||||
stopInterval();
|
||||
indexStory.value = val.activeIndex;
|
||||
};
|
||||
function focusMessage(val) {
|
||||
if (val !== "") sendMessageState.value = true;
|
||||
else sendMessageState.value = false;
|
||||
}
|
||||
function startOver() {
|
||||
interval = setInterval();
|
||||
}
|
||||
function stopInterval() {
|
||||
clearInterval(interval);
|
||||
interval = void 0;
|
||||
}
|
||||
watch([playingSlide, indexStory], async () => {
|
||||
const story = userStory.value?.stories[playingSlide.value];
|
||||
const item = story.storyviews.find((item2) => item2.user_id === (userStore.user?.id || "me"));
|
||||
if (userStore.user?.id) {
|
||||
if (!item) await userViewStory(userStore.user?.id, story.id);
|
||||
} else {
|
||||
setStorySeenLocal(story.id);
|
||||
}
|
||||
if (!item) {
|
||||
Object.assign(story, {
|
||||
storyviews: [...item?.storyviews ?? [], { user_id: userStore.user?.id || "me", story_id: story.id }]
|
||||
});
|
||||
}
|
||||
}, { deep: true, immediate: true });
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _directive_lazy = resolveDirective("lazy");
|
||||
let _temp0, _temp1, _temp2;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "flex full_story z-400 justify-center bg-black" }, _attrs))}><div class="relative w-full md:w-426px bg-black flex items-center pb-5rem">`);
|
||||
if (!isPaused.value) {
|
||||
_push(`<div class="absolute w-full top-0 right-0 left-0 z-1000"><div class="flex gap-2px shadow-xl"><!--[-->`);
|
||||
ssrRenderList(userStory.value.stories, (story, index) => {
|
||||
_push(ssrRenderComponent(CustomProgressBar, {
|
||||
key: index,
|
||||
rtl: unref(config).isRTL,
|
||||
percent: progress.value[index]
|
||||
}, null, _parent));
|
||||
});
|
||||
_push(`<!--]--></div><div class="p-2 flex w-full items-center gap-2 account-detail-area justify-between"><div class="flex items-center gap-2"><div class="relative"><img${ssrRenderAttrs(_temp0 = mergeProps({
|
||||
class: "w-2.5rem h-2.5rem rounded-full",
|
||||
alt: unref(config).appName.en
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(config).useDataStorage(userStory.value?.avatar), loading: unref(empty_user), error: unref(empty_user) })))}>${"textContent" in _temp0 ? ssrInterpolate(_temp0.textContent) : _temp0.innerHTML ?? ""}`);
|
||||
if (storyOwner.value) {
|
||||
_push(`<img${ssrRenderAttr("src", _imports_0)}${ssrRenderAttr("alt", unref(config).appName.en)} class="w-15px absolute right-0 bottom-0 bg-white rounded-full">`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div><div class="text-white text-xs">${ssrInterpolate(userStory.value?.name)}</div></div>`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:add",
|
||||
class: "text-white rotate-45",
|
||||
size: "32",
|
||||
onClick: ($event) => emits("update:id", void 0)
|
||||
}, null, _parent));
|
||||
_push(`</div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (!isPaused.value) {
|
||||
_push(`<div class="absolute w-full bottom-0 right-0 left-0 blurred-gradient-bg z-2000 functions-area">`);
|
||||
if (!storyOwner.value) {
|
||||
_push(`<div class="flex gap-5 p-5 items-center">`);
|
||||
_push(ssrRenderComponent(BasicInput, {
|
||||
value: message.value,
|
||||
"onUpdate:value": ($event) => message.value = $event,
|
||||
"place-holder": unref(config).useString("sendMessage"),
|
||||
onOnchange: focusMessage,
|
||||
class: "story_input flex-1"
|
||||
}, null, _parent));
|
||||
_push(`<div class="flex w-1.5rem justify-end items-center">`);
|
||||
if (!sendMessageState.value) {
|
||||
_push(ssrRenderComponent(_sfc_main$2, {
|
||||
mode: "night",
|
||||
class: "w-1.5rem"
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(ssrRenderComponent(BasicButton, {
|
||||
size: "small",
|
||||
shape: "circle",
|
||||
class: "w-2.2rem !h-2.2rem",
|
||||
type: "primary"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(BasicIconOld, { icon: "vuesax-linear:send-1" }, null, _parent2, _scopeId));
|
||||
} else {
|
||||
return [
|
||||
createVNode(BasicIconOld, { icon: "vuesax-linear:send-1" })
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
} else {
|
||||
_push(`<div class="flex gap-5 p-5 items-center mx4" dir="rtl"><div class="flex flex-col items-center gap-3 text-white">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:trash",
|
||||
size: "22"
|
||||
}, null, _parent));
|
||||
_push(`<div class="text-xs">${ssrInterpolate(unref(config).useString("delete"))}</div></div><div class="flex flex-col items-center gap-3 text-white"><img${ssrRenderAttr("src", _imports_1)}${ssrRenderAttr("alt", unref(config).appName.en)}><div class="text-xs">${ssrInterpolate(unref(config).useString("highlight"))}</div></div></div>`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<div class="w-full">`);
|
||||
_push(ssrRenderComponent(unref(Swiper), {
|
||||
key: indexStory.value,
|
||||
ref_key: "swiperRef",
|
||||
ref: swiperRef,
|
||||
onSwiper,
|
||||
onSlideChange,
|
||||
initialSlide: indexStory.value,
|
||||
grabCursor: true,
|
||||
effect: "creative",
|
||||
creativeEffect: {
|
||||
prev: { shadow: true, origin: "left center", translate: ["-5%", 0, -200], rotate: [0, 100, 0] },
|
||||
next: { origin: "right center", translate: ["5%", 0, -200], rotate: [0, -100, 0] }
|
||||
},
|
||||
modules,
|
||||
class: "mySwiper6"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
if (!_ctx.specifyId) {
|
||||
_push2(`<!--[-->`);
|
||||
ssrRenderList(unref(mediaStore).users, (story, i) => {
|
||||
_push2(ssrRenderComponent(unref(SwiperSlide), {
|
||||
key: i,
|
||||
class: "self-center"
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<img${ssrRenderAttrs(_temp1 = mergeProps({
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-full bg-black select-none pointer-events-none",
|
||||
key: i,
|
||||
draggable: "false"
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(config).useDataStorage(story.stories[playingSlide.value]?.url), loading: unref(img_gif), error: unref(img_gif) })))}${_scopeId2}>${"textContent" in _temp1 ? ssrInterpolate(_temp1.textContent) : _temp1.innerHTML ?? ""}`);
|
||||
} else {
|
||||
return [
|
||||
withDirectives((openBlock(), createBlock("img", {
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-full bg-black select-none pointer-events-none",
|
||||
key: i,
|
||||
onContextmenu: withModifiers(() => {
|
||||
}, ["prevent"]),
|
||||
draggable: "false"
|
||||
}, null, 40, ["alt", "onContextmenu"])), [
|
||||
[_directive_lazy, { src: unref(config).useDataStorage(story.stories[playingSlide.value]?.url), loading: unref(img_gif), error: unref(img_gif) }]
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent2, _scopeId));
|
||||
});
|
||||
_push2(`<!--]-->`);
|
||||
} else {
|
||||
_push2(ssrRenderComponent(unref(SwiperSlide), { class: "self-center" }, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<img${ssrRenderAttrs(_temp2 = mergeProps({
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-full bg-black select-none pointer-events-none",
|
||||
key: _ctx.i
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(config).useDataStorage(userStory.value.stories[playingSlide.value]?.url), loading: unref(img_gif), error: unref(img_gif) })))}${_scopeId2}>${"textContent" in _temp2 ? ssrInterpolate(_temp2.textContent) : _temp2.innerHTML ?? ""}`);
|
||||
} else {
|
||||
return [
|
||||
withDirectives((openBlock(), createBlock("img", {
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-full bg-black select-none pointer-events-none",
|
||||
key: _ctx.i
|
||||
}, null, 8, ["alt"])), [
|
||||
[_directive_lazy, { src: unref(config).useDataStorage(userStory.value.stories[playingSlide.value]?.url), loading: unref(img_gif), error: unref(img_gif) }]
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
}
|
||||
} else {
|
||||
return [
|
||||
!_ctx.specifyId ? (openBlock(true), createBlock(Fragment, { key: 0 }, renderList(unref(mediaStore).users, (story, i) => {
|
||||
return openBlock(), createBlock(unref(SwiperSlide), {
|
||||
key: i,
|
||||
class: "self-center"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
withDirectives((openBlock(), createBlock("img", {
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-full bg-black select-none pointer-events-none",
|
||||
key: i,
|
||||
onContextmenu: withModifiers(() => {
|
||||
}, ["prevent"]),
|
||||
draggable: "false"
|
||||
}, null, 40, ["alt", "onContextmenu"])), [
|
||||
[_directive_lazy, { src: unref(config).useDataStorage(story.stories[playingSlide.value]?.url), loading: unref(img_gif), error: unref(img_gif) }]
|
||||
])
|
||||
]),
|
||||
_: 2
|
||||
}, 1024);
|
||||
}), 128)) : (openBlock(), createBlock(unref(SwiperSlide), {
|
||||
key: 1,
|
||||
class: "self-center"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
withDirectives((openBlock(), createBlock("img", {
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-full bg-black select-none pointer-events-none",
|
||||
key: _ctx.i
|
||||
}, null, 8, ["alt"])), [
|
||||
[_directive_lazy, { src: unref(config).useDataStorage(userStory.value.stories[playingSlide.value]?.url), loading: unref(img_gif), error: unref(img_gif) }]
|
||||
])
|
||||
]),
|
||||
_: 1
|
||||
}))
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/base/pages/home/components/FullScreenStories.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { CustomProgressBar as C, _sfc_main as _, _imports_0 as a, img_gif as i, setInterval as s };
|
||||
@@ -0,0 +1,70 @@
|
||||
import { defineComponent, computed, ref, mergeProps, unref, withCtx, renderSlot, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrInterpolate, ssrRenderComponent, ssrRenderSlot } from 'vue/server-renderer';
|
||||
import { a as useConfigStore } from './server.mjs';
|
||||
import { _ as __nuxt_component_1 } from './FormItem-Uo-Qw9vC.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "InstaInput",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
value: {},
|
||||
rules: {},
|
||||
name: {},
|
||||
label: {},
|
||||
height: {},
|
||||
customLabel: {},
|
||||
contentHeight: { type: Boolean, default: false }
|
||||
},
|
||||
emits: ["update:value", "onchange"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
const checkField = computed(() => localValue.value?.length > 0 || typeof localValue.value === "number" && localValue.value !== 0);
|
||||
const props = __props;
|
||||
const emits = __emit;
|
||||
const config = useConfigStore();
|
||||
const localValue = computed({
|
||||
get() {
|
||||
return props.value;
|
||||
},
|
||||
set(value) {
|
||||
emits("update:value", value);
|
||||
}
|
||||
});
|
||||
const formItemRef = ref(null);
|
||||
const hasError = ref(false);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_a_form_item = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: ["border-1 border-solid rounded-xl px-2 mt-2 inputUser instaInputStyle", [{ "border-red-500": hasError.value, "h-3.6rem": !_ctx.contentHeight }]],
|
||||
style: [_ctx.height ? `height: ${_ctx.height};` : ""]
|
||||
}, _attrs))}><div class="relative"><div class="ms-2 h-5 -mb-1 text-gray-4 mt-4px text-13px">${ssrInterpolate(checkField.value ? _ctx.customLabel ? _ctx.customLabel : unref(config).useString(_ctx.label) : "")}</div>`);
|
||||
_push(ssrRenderComponent(_component_a_form_item, {
|
||||
ref_key: "formItemRef",
|
||||
ref: formItemRef,
|
||||
class: ["inputTransition", checkField.value ? "" : "absolute w-full top-2px inputTransition"],
|
||||
rules: _ctx.rules,
|
||||
name: _ctx.name
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
||||
} else {
|
||||
return [
|
||||
renderSlot(_ctx.$slots, "default")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 3
|
||||
}, _parent));
|
||||
_push(`</div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/InstaInput.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const InstaInput = Object.assign(_sfc_main, { __name: "InstaInput" });
|
||||
|
||||
export { InstaInput as I };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { defineComponent, computed, ref, watch, unref, mergeProps, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { a as useConfigStore } from './server.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "Logo",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const config = useConfigStore();
|
||||
const logoSrc = computed(() => {
|
||||
if (!config.STORAGE_LOGO) {
|
||||
console.warn("⚠️ STORAGE_LOGO is empty");
|
||||
return "";
|
||||
}
|
||||
const logo = config.isNightStore ? "logo_full_white.png" : "logo_full.png";
|
||||
const fullPath = config.useLogo(logo);
|
||||
console.log("🖼️ Logo computed:", fullPath);
|
||||
return fullPath;
|
||||
});
|
||||
ref(false);
|
||||
watch(() => config.STORAGE_LOGO, (newVal) => {
|
||||
console.log("🔄 STORAGE_LOGO changed:", newVal);
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
if (!logoSrc.value) {
|
||||
_push(`<span${ssrRenderAttrs(_attrs)}>${ssrInterpolate(unref(config).appName.en)}</span>`);
|
||||
} else {
|
||||
_push(`<img${ssrRenderAttrs(mergeProps({
|
||||
key: logoSrc.value,
|
||||
src: logoSrc.value,
|
||||
alt: unref(config).appName.en,
|
||||
class: "inline"
|
||||
}, _attrs))}>`);
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Logo.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const Logo = Object.assign(_sfc_main, { __name: "Logo" });
|
||||
|
||||
export { Logo as L };
|
||||
@@ -0,0 +1,38 @@
|
||||
import { defineComponent, computed, ref, watch, unref, mergeProps, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { a as useConfigStore } from './server.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "Logo1",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const config = useConfigStore();
|
||||
const logoSrc = computed(
|
||||
() => config.isNightStore ? config.useLogo("logo_mini_white.png") : config.useLogo("logo_mini.png")
|
||||
);
|
||||
const showFallback = ref(false);
|
||||
watch(logoSrc, () => {
|
||||
showFallback.value = false;
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
if (showFallback.value) {
|
||||
_push(`<span${ssrRenderAttrs(_attrs)}>${ssrInterpolate(unref(config).appName.en)}</span>`);
|
||||
} else {
|
||||
_push(`<img${ssrRenderAttrs(mergeProps({
|
||||
src: logoSrc.value,
|
||||
alt: unref(config).appName.en,
|
||||
class: "inline"
|
||||
}, _attrs))}>`);
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Logo1.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_0 = Object.assign(_sfc_main, { __name: "Logo1" });
|
||||
|
||||
export { __nuxt_component_0 as _ };
|
||||
@@ -0,0 +1,233 @@
|
||||
import { defineComponent, ref, computed, mergeProps, unref, withCtx, createTextVNode, toDisplayString, reactive, createVNode, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderList, ssrRenderComponent, ssrRenderAttr, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { U as UserProfilePic } from './UserProfilePic-CSSFM-Xe.mjs';
|
||||
import { B as BasicButton } from './BasicButton-7YIRCRg8.mjs';
|
||||
import { u as useRouter$1, a as useConfigStore, aM as useRoute$1, q as useElementSize } from './server.mjs';
|
||||
import { u as usePrice } from './usePrice-CFcNV1RQ.mjs';
|
||||
import { t as toJalali } from './useDateTime-iTLoRLEX.mjs';
|
||||
import { u as useMediaStore } from './media-Cj7oyS0P.mjs';
|
||||
import { _ as __nuxt_component_1 } from './index-l8e9lvT3.mjs';
|
||||
import { ContentLoader } from 'vue-content-loader';
|
||||
|
||||
const _imports_0$1 = "" + __buildAssetsURL("empty_order.g7yXtwjI.svg");
|
||||
const _imports_0 = "" + __buildAssetsURL("delivery-box-light.Cz31HXNr.svg");
|
||||
const _imports_1 = "" + __buildAssetsURL("delivery-box.DZAXZSja.svg");
|
||||
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
||||
__name: "box",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const config = useConfigStore();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
if (unref(config).isNightStore) {
|
||||
_push(`<img${ssrRenderAttrs(mergeProps({
|
||||
src: _imports_0,
|
||||
alt: "comment",
|
||||
"cursor-pointer": ""
|
||||
}, _attrs))}>`);
|
||||
} else {
|
||||
_push(`<img${ssrRenderAttrs(mergeProps({
|
||||
src: _imports_1,
|
||||
alt: "comment",
|
||||
"cursor-pointer": ""
|
||||
}, _attrs))}>`);
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$3 = _sfc_main$3.setup;
|
||||
_sfc_main$3.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("assets/img/icons/box.vue");
|
||||
return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
||||
__name: "OrderCard",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
order: {}
|
||||
},
|
||||
setup(__props) {
|
||||
const props = __props;
|
||||
const router = useRouter$1();
|
||||
const config = useConfigStore();
|
||||
const address = computed(() => {
|
||||
const convert = JSON.parse(props.order.address)?.payload;
|
||||
return `${convert?.province ?? ""}-${convert?.city ?? ""}-${convert?.address ?? ""}`;
|
||||
});
|
||||
useMediaStore();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_a_divider = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(_attrs)}><div class="flex justify-between items-center mt-5"><div>`);
|
||||
if (unref(config).isSeller) {
|
||||
_push(ssrRenderComponent(UserProfilePic, {
|
||||
width: "60",
|
||||
src: _ctx.order.user?.avatar,
|
||||
"just-show-profile": ""
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(ssrRenderComponent(_sfc_main$3, { class: "w-2rem" }, null, _parent));
|
||||
}
|
||||
_push(`</div><div class="flex-1 mx-5 gap-4">`);
|
||||
if (unref(config).isSeller) {
|
||||
_push(`<div class="text-sm font-semibold">${ssrInterpolate(_ctx.order.user?.name ?? "_")}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<div class="text-sm"><span class="text-gray-400 text-xs">${ssrInterpolate(unref(config).useString("orderNumber"))}:</span><span class="text-gray-700 ms-2 font-bold">${ssrInterpolate(_ctx.order.id)}</span></div><div class="flex items-center text-xs gap-2 mt-1"><span class="text-gray-400">${ssrInterpolate(unref(config).useString("totalPrice"))}:</span><span class="text-gray-700 font-bold">${ssrInterpolate(unref(usePrice)(_ctx.order.discount_total_price, true))}</span></div><div class="flex items-baseline text-xs gap-2 mt-1"><span class="text-gray-400">${ssrInterpolate(unref(config).useString("date"))}:</span><span class="text-gray-700 font-bold">${ssrInterpolate(unref(toJalali)(_ctx.order.created_at))}</span></div></div><div class="flex flex-col items-end">`);
|
||||
_push(ssrRenderComponent(BasicButton, {
|
||||
class: "!h-7",
|
||||
onClick: ($event) => unref(router).push({ name: "user-order-id", params: { id: _ctx.order.id } })
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("details"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("details")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div></div>`);
|
||||
_push(ssrRenderComponent(_component_a_divider, { class: "my-2" }, null, _parent));
|
||||
_push(`<p class="text-xs font-200">${ssrInterpolate(address.value)}</p></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("components/Cards/OrderCard.vue");
|
||||
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
|
||||
};
|
||||
const OrderCard = Object.assign(_sfc_main$2, { __name: "CardsOrderCard" });
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "OrderCardSkeleton",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const isLoaded = ref(false);
|
||||
const skeletonRatio = ref(null);
|
||||
const skeletonSize = reactive(
|
||||
useElementSize(skeletonRatio, { width: 0, height: 0 }, { box: "border-box" })
|
||||
);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
if (isLoaded.value) {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
ref_key: "skeletonRatio",
|
||||
ref: skeletonRatio,
|
||||
class: "h-fit"
|
||||
}, _attrs))}>`);
|
||||
_push(ssrRenderComponent(unref(ContentLoader), {
|
||||
width: skeletonSize.width,
|
||||
height: "80"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<circle cx="30" cy="50" r="30"${_scopeId}></circle><rect x="80" y="15" rx="3" ry="3" width="190" height="15"${_scopeId}></rect><rect x="80" y="40" rx="3" ry="3" width="190" height="15"${_scopeId}></rect><rect x="80" y="65" rx="3" ry="3" width="190" height="15"${_scopeId}></rect><rect${ssrRenderAttr("x", skeletonSize.width - 80)} y="35" rx="3" ry="3" width="80" height="30"${_scopeId}></rect>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("circle", {
|
||||
cx: "30",
|
||||
cy: "50",
|
||||
r: "30"
|
||||
}),
|
||||
createVNode("rect", {
|
||||
x: "80",
|
||||
y: "15",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: "190",
|
||||
height: "15"
|
||||
}),
|
||||
createVNode("rect", {
|
||||
x: "80",
|
||||
y: "40",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: "190",
|
||||
height: "15"
|
||||
}),
|
||||
createVNode("rect", {
|
||||
x: "80",
|
||||
y: "65",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: "190",
|
||||
height: "15"
|
||||
}),
|
||||
createVNode("rect", {
|
||||
x: skeletonSize.width - 80,
|
||||
y: "35",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: "80",
|
||||
height: "30"
|
||||
}, null, 8, ["x"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
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("components/Cards/OrderCardSkeleton.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const OrderCardSkeleton = Object.assign(_sfc_main$1, { __name: "CardsOrderCardSkeleton" });
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "OrdersList",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const router = useRouter$1();
|
||||
const config = useConfigStore();
|
||||
const loading = ref(false);
|
||||
ref(false);
|
||||
ref(0);
|
||||
ref(10);
|
||||
const orders = ref([]);
|
||||
computed(() => router.currentRoute.value.params.id);
|
||||
useRoute$1();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: ["flex flex-col gap-2 min-h-50vh", orders.value?.length > 0 ? "" : "justify-center"]
|
||||
}, _attrs))}>`);
|
||||
if (!loading.value) {
|
||||
_push(`<!--[-->`);
|
||||
if (orders.value.length !== 0) {
|
||||
_push(`<!--[-->`);
|
||||
ssrRenderList(orders.value, (order) => {
|
||||
_push(ssrRenderComponent(OrderCard, { order }, null, _parent));
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<!--[--><img${ssrRenderAttr("src", _imports_0$1)} alt="orders" class="w-20 self-center"><p class="self-center text-gray-6">${ssrInterpolate(unref(config).useString("orderListIsEmpty"))}</p><!--]-->`);
|
||||
}
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<!--[-->`);
|
||||
ssrRenderList(6, (i) => {
|
||||
_push(ssrRenderComponent(OrderCardSkeleton, { key: i }, null, _parent));
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/base/pages/statisticsList/components/OrdersList.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as _ };
|
||||
@@ -0,0 +1,309 @@
|
||||
import { defineComponent, ref, reactive, mergeProps, unref, withCtx, createVNode, resolveDirective, openBlock, createBlock, withDirectives, Fragment, renderList, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderAttr, ssrGetDirectiveProps, ssrInterpolate, ssrRenderList, ssrRenderClass } from 'vue/server-renderer';
|
||||
import { e as empty_user } from './empty_user-DSxcM_ac.mjs';
|
||||
import { f as formatTime } from './useDateTime-iTLoRLEX.mjs';
|
||||
import { Swiper, SwiperSlide } from 'swiper/vue';
|
||||
import { Pagination } from 'swiper/modules';
|
||||
import { i as img_gif } from './post_loading-CMOcYm9B.mjs';
|
||||
import { q as useElementSize, u as useRouter$1, a as useConfigStore, b as useUserStore } from './server.mjs';
|
||||
import { B as BasicIconOld } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { _ as _sfc_main$3 } from './like-D4L8S2C_.mjs';
|
||||
import { b as _sfc_main$7, a as _sfc_main$5, e as _sfc_main$6 } from './moreOptionProduct-CrrGHZLj.mjs';
|
||||
import { ContentLoader } from 'vue-content-loader';
|
||||
|
||||
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
||||
__name: "Content",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
media: {},
|
||||
name: {},
|
||||
id: {},
|
||||
scrollSave: {}
|
||||
},
|
||||
setup(__props) {
|
||||
useRouter$1();
|
||||
const config = useConfigStore();
|
||||
const videos = ref([]);
|
||||
const modules = [Pagination];
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _directive_lazy = resolveDirective("lazy");
|
||||
let _temp0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "mt-.5rem" }, _attrs))} data-v-59d99514>`);
|
||||
_push(ssrRenderComponent(unref(Swiper), {
|
||||
pagination: true,
|
||||
modules,
|
||||
class: ["postConfig !m-unset !w-full", _ctx.media.length > 1 ? "!aspect-square !h-unset" : "!h-fit"]
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<!--[-->`);
|
||||
ssrRenderList(_ctx.media, (slide) => {
|
||||
_push2(ssrRenderComponent(unref(SwiperSlide), {
|
||||
class: ["!w-full", _ctx.media.length > 1 ? "!aspect-square !h-unset" : "!h-fit"]
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
if (slide.type === "video") {
|
||||
_push3(`<div class="video-container" data-v-59d99514${_scopeId2}><video${ssrRenderAttr("src", unref(config).useDataStorage(slide.url))} playsinline muted loop class="video" data-v-59d99514${_scopeId2}></video></div>`);
|
||||
} else {
|
||||
_push3(`<div class="${ssrRenderClass([_ctx.media.length > 1 ? "aspect-square" : "", "w-full flex items-center"])}" data-v-59d99514${_scopeId2}><img${ssrRenderAttrs(_temp0 = mergeProps({
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-full"
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(config).useDataStorage(slide.url), loading: unref(img_gif), error: unref(img_gif) })))} data-v-59d99514${_scopeId2}>${"textContent" in _temp0 ? ssrInterpolate(_temp0.textContent) : _temp0.innerHTML ?? ""}</div>`);
|
||||
}
|
||||
} else {
|
||||
return [
|
||||
slide.type === "video" ? (openBlock(), createBlock("div", {
|
||||
key: 0,
|
||||
class: "video-container"
|
||||
}, [
|
||||
createVNode("video", {
|
||||
ref_for: true,
|
||||
ref_key: "videos",
|
||||
ref: videos,
|
||||
src: unref(config).useDataStorage(slide.url),
|
||||
playsinline: "",
|
||||
muted: "",
|
||||
loop: "",
|
||||
class: "video"
|
||||
}, null, 8, ["src"])
|
||||
])) : (openBlock(), createBlock("div", {
|
||||
key: 1,
|
||||
class: ["w-full flex items-center", _ctx.media.length > 1 ? "aspect-square" : ""]
|
||||
}, [
|
||||
withDirectives(createVNode("img", {
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-full"
|
||||
}, null, 8, ["alt"]), [
|
||||
[_directive_lazy, { src: unref(config).useDataStorage(slide.url), loading: unref(img_gif), error: unref(img_gif) }]
|
||||
])
|
||||
], 2))
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent2, _scopeId));
|
||||
});
|
||||
_push2(`<!--]-->`);
|
||||
} else {
|
||||
return [
|
||||
(openBlock(true), createBlock(Fragment, null, renderList(_ctx.media, (slide) => {
|
||||
return openBlock(), createBlock(unref(SwiperSlide), {
|
||||
class: ["!w-full", _ctx.media.length > 1 ? "!aspect-square !h-unset" : "!h-fit"]
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
slide.type === "video" ? (openBlock(), createBlock("div", {
|
||||
key: 0,
|
||||
class: "video-container"
|
||||
}, [
|
||||
createVNode("video", {
|
||||
ref_for: true,
|
||||
ref_key: "videos",
|
||||
ref: videos,
|
||||
src: unref(config).useDataStorage(slide.url),
|
||||
playsinline: "",
|
||||
muted: "",
|
||||
loop: "",
|
||||
class: "video"
|
||||
}, null, 8, ["src"])
|
||||
])) : (openBlock(), createBlock("div", {
|
||||
key: 1,
|
||||
class: ["w-full flex items-center", _ctx.media.length > 1 ? "aspect-square" : ""]
|
||||
}, [
|
||||
withDirectives(createVNode("img", {
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-full"
|
||||
}, null, 8, ["alt"]), [
|
||||
[_directive_lazy, { src: unref(config).useDataStorage(slide.url), loading: unref(img_gif), error: unref(img_gif) }]
|
||||
])
|
||||
], 2))
|
||||
]),
|
||||
_: 2
|
||||
}, 1032, ["class"]);
|
||||
}), 256))
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`<div class="flex bg-[#0195f7] text-white px-3 py-3 items-center justify-between cursor-pointer" data-v-59d99514><div class="font-semibold text-xs" data-v-59d99514>${ssrInterpolate(_ctx.name)}</div><div class="flex items-center" data-v-59d99514><div class="text-xs" data-v-59d99514>${ssrInterpolate(unref(config).useString("viewProduct"))}</div>`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: unref(config).isRTL ? "vuesax-linear:arrow-left-1" : "vuesax-linear:arrow-right-1",
|
||||
size: "16"
|
||||
}, null, _parent));
|
||||
_push(`</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("views/base/pages/home/components/Content.vue");
|
||||
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
|
||||
};
|
||||
const Content = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-59d99514"]]);
|
||||
const maxLength = 100;
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "Post",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
post: {},
|
||||
index: {},
|
||||
scrollSave: {},
|
||||
addLikeLoading: { type: Boolean }
|
||||
},
|
||||
emits: ["openOption", "openComment", "handleLike", "handleSave"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
useRouter$1();
|
||||
const emits = __emit;
|
||||
const config = useConfigStore();
|
||||
const expandedPosts = ref({});
|
||||
const user = useUserStore();
|
||||
const shouldShowMore = (caption) => caption?.length > maxLength;
|
||||
function openOption(id) {
|
||||
emits("openOption", id);
|
||||
}
|
||||
const truncatedCaption = (caption) => {
|
||||
return shouldShowMore(caption) ? caption?.slice(0, maxLength) + "..." : caption;
|
||||
};
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _directive_lazy = resolveDirective("lazy");
|
||||
let _temp0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: "w-full mb-2",
|
||||
id: "post-" + _ctx.post.id
|
||||
}, _attrs))}><div class="flex px-3 items-center justify-between"><div class="flex items-center"><img${ssrRenderAttrs(_temp0 = mergeProps({
|
||||
alt: "instagram",
|
||||
class: "w-2rem h-2rem rounded-full"
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(config).useDataStorage(_ctx.post?.users?.avatar), loading: unref(empty_user), error: unref(empty_user) })))}>${"textContent" in _temp0 ? ssrInterpolate(_temp0.textContent) : _temp0.innerHTML ?? ""}<div class="ms-2"><div class="text-sm font-semibold">${ssrInterpolate(_ctx.post?.users?.username)}</div></div></div>`);
|
||||
if (_ctx.post?.users?.id === unref(user).user?.id) {
|
||||
_push(`<div>`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:more",
|
||||
class: "rotate-90",
|
||||
size: "18",
|
||||
onClick: ($event) => openOption(_ctx.post.id)
|
||||
}, null, _parent));
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
_push(ssrRenderComponent(Content, {
|
||||
media: _ctx.post?.files,
|
||||
name: _ctx.post.title_fa,
|
||||
id: _ctx.post.id,
|
||||
scrollSave: _ctx.scrollSave
|
||||
}, null, _parent));
|
||||
_push(`<div class="p-4"><div class="flex gap-4 items-center justify-between"><div class="flex items-center gap-4"><div class="flex items-center gap-1"${ssrRenderAttr("aria-disabled", _ctx.addLikeLoading)}>`);
|
||||
_push(ssrRenderComponent(_sfc_main$3, {
|
||||
"is-liked": _ctx.post.likes?.some((x) => x.user_id === unref(user).user?.id)
|
||||
}, null, _parent));
|
||||
_push(` ${ssrInterpolate(_ctx.post?.likes?.length ?? 0)}</div><div class="flex items-center gap-1">`);
|
||||
_push(ssrRenderComponent(_sfc_main$7, null, null, _parent));
|
||||
_push(` ${ssrInterpolate(_ctx.post?.comments?.length ?? 0)}</div><div class="flex items-center gap-1">`);
|
||||
_push(ssrRenderComponent(_sfc_main$5, null, null, _parent));
|
||||
_push(`</div></div><div>`);
|
||||
_push(ssrRenderComponent(_sfc_main$6, {
|
||||
"is-saved": _ctx.post.saved?.some((x) => x.user_id === unref(user).user?.id)
|
||||
}, null, _parent));
|
||||
_push(`</div></div><div class="mt-2 text-sm"><span class="font-semibold text-sm ms1">${ssrInterpolate(_ctx.post?.users?.username)}</span><span class="ms-2 text-caption whitespace-pre-line">${ssrInterpolate(expandedPosts.value[_ctx.index] ? _ctx.post?.description : truncatedCaption(_ctx.post?.description))}</span>`);
|
||||
if (shouldShowMore(_ctx.post?.description)) {
|
||||
_push(`<span class="text-gray cursor-pointer ms-1 whitespace-pre-line">${ssrInterpolate(expandedPosts.value[_ctx.index] ? unref(config).useString("less") : unref(config).useString("more"))}</span>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<div class="text-xs mt-1 text-gray-500">${ssrInterpolate(unref(formatTime)(_ctx.post?.created_at))}</div></div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("components/Post.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const Post = Object.assign(_sfc_main$1, { __name: "Post" });
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "PostCardSkeleton",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const isLoaded = ref(false);
|
||||
const skeletonRatio = ref(null);
|
||||
const skeletonSize = reactive(
|
||||
useElementSize(skeletonRatio, { width: 0, height: 0 }, { box: "border-box" })
|
||||
);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
if (isLoaded.value) {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
ref_key: "skeletonRatio",
|
||||
ref: skeletonRatio,
|
||||
class: "h-fit"
|
||||
}, _attrs))}>`);
|
||||
_push(ssrRenderComponent(unref(ContentLoader), {
|
||||
width: skeletonSize.width,
|
||||
height: "800"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<circle${ssrRenderAttr("cx", 30)} cy="30" r="20"${_scopeId}></circle><rect x="60" y="25" rx="3" ry="3" width="100" height="10"${_scopeId}></rect><rect x="0" y="60" rx="0" ry="0"${ssrRenderAttr("width", Math.max(100, skeletonSize.width))}${ssrRenderAttr("height", Math.max(0, skeletonSize.width - 100))}${_scopeId}></rect><rect x="20"${ssrRenderAttr("y", Math.max(0, skeletonSize.width - 10))} rx="0" ry="0"${ssrRenderAttr("width", 300)}${ssrRenderAttr("height", 10)}${_scopeId}></rect><rect x="20"${ssrRenderAttr("y", Math.max(0, skeletonSize.width + 10))} rx="0" ry="0"${ssrRenderAttr("width", 300)}${ssrRenderAttr("height", 8)}${_scopeId}></rect>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("circle", {
|
||||
cx: 30,
|
||||
cy: "30",
|
||||
r: "20"
|
||||
}),
|
||||
createVNode("rect", {
|
||||
x: "60",
|
||||
y: "25",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: "100",
|
||||
height: "10"
|
||||
}),
|
||||
createVNode("rect", {
|
||||
x: "0",
|
||||
y: "60",
|
||||
rx: "0",
|
||||
ry: "0",
|
||||
width: Math.max(100, skeletonSize.width),
|
||||
height: Math.max(0, skeletonSize.width - 100)
|
||||
}, null, 8, ["width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: "20",
|
||||
y: Math.max(0, skeletonSize.width - 10),
|
||||
rx: "0",
|
||||
ry: "0",
|
||||
width: 300,
|
||||
height: 10
|
||||
}, null, 8, ["y"]),
|
||||
createVNode("rect", {
|
||||
x: "20",
|
||||
y: Math.max(0, skeletonSize.width + 10),
|
||||
rx: "0",
|
||||
ry: "0",
|
||||
width: 300,
|
||||
height: 8
|
||||
}, null, 8, ["y"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/base/pages/home/components/PostCardSkeleton.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { Post as P, _sfc_main as _ };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,719 @@
|
||||
import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import { defineComponent, ref, watch, computed, createVNode, provide, inject, nextTick } from 'vue';
|
||||
import { z as useConfigInject, A as classNames, B as genComponentStyleHook, C as merge, D as useInjectDisabled, E as omit, P as PropTypes, F as functionType, G as stringType, H as booleanType, I as arrayType, J as resetComponent, K as Keyframe, L as genFocusOutline } from './server.mjs';
|
||||
import { u as useInjectFormItemContext, F as FormItemInputContext } from './FormItemContext-DTpHAXaY.mjs';
|
||||
import _extends from '@babel/runtime/helpers/esm/extends';
|
||||
import { V as VcCheckbox } from './Checkbox-BqbMrYFp.mjs';
|
||||
|
||||
const radioGroupContextKey = /* @__PURE__ */ Symbol("radioGroupContextKey");
|
||||
const useProvideRadioGroupContext = (props) => {
|
||||
provide(radioGroupContextKey, props);
|
||||
};
|
||||
const useInjectRadioGroupContext = () => {
|
||||
return inject(radioGroupContextKey, void 0);
|
||||
};
|
||||
const radioOptionTypeContextKey = /* @__PURE__ */ Symbol("radioOptionTypeContextKey");
|
||||
const useProvideRadioOptionTypeContext = (props) => {
|
||||
provide(radioOptionTypeContextKey, props);
|
||||
};
|
||||
const useInjectRadioOptionTypeContext = () => {
|
||||
return inject(radioOptionTypeContextKey, void 0);
|
||||
};
|
||||
const antRadioEffect = new Keyframe("antRadioEffect", {
|
||||
"0%": {
|
||||
transform: "scale(1)",
|
||||
opacity: 0.5
|
||||
},
|
||||
"100%": {
|
||||
transform: "scale(1.6)",
|
||||
opacity: 0
|
||||
}
|
||||
});
|
||||
const getGroupRadioStyle = (token) => {
|
||||
const {
|
||||
componentCls,
|
||||
antCls
|
||||
} = token;
|
||||
const groupPrefixCls = `${componentCls}-group`;
|
||||
return {
|
||||
[groupPrefixCls]: _extends(_extends({}, resetComponent(token)), {
|
||||
display: "inline-block",
|
||||
fontSize: 0,
|
||||
// RTL
|
||||
[`&${groupPrefixCls}-rtl`]: {
|
||||
direction: "rtl"
|
||||
},
|
||||
[`${antCls}-badge ${antCls}-badge-count`]: {
|
||||
zIndex: 1
|
||||
},
|
||||
[`> ${antCls}-badge:not(:first-child) > ${antCls}-button-wrapper`]: {
|
||||
borderInlineStart: "none"
|
||||
}
|
||||
})
|
||||
};
|
||||
};
|
||||
const getRadioBasicStyle = (token) => {
|
||||
const {
|
||||
componentCls,
|
||||
radioWrapperMarginRight,
|
||||
radioCheckedColor,
|
||||
radioSize,
|
||||
motionDurationSlow,
|
||||
motionDurationMid,
|
||||
motionEaseInOut,
|
||||
motionEaseInOutCirc,
|
||||
radioButtonBg,
|
||||
colorBorder,
|
||||
lineWidth,
|
||||
radioDotSize,
|
||||
colorBgContainerDisabled,
|
||||
colorTextDisabled,
|
||||
paddingXS,
|
||||
radioDotDisabledColor,
|
||||
lineType,
|
||||
radioDotDisabledSize,
|
||||
wireframe,
|
||||
colorWhite
|
||||
} = token;
|
||||
const radioInnerPrefixCls = `${componentCls}-inner`;
|
||||
return {
|
||||
[`${componentCls}-wrapper`]: _extends(_extends({}, resetComponent(token)), {
|
||||
position: "relative",
|
||||
display: "inline-flex",
|
||||
alignItems: "baseline",
|
||||
marginInlineStart: 0,
|
||||
marginInlineEnd: radioWrapperMarginRight,
|
||||
cursor: "pointer",
|
||||
// RTL
|
||||
[`&${componentCls}-wrapper-rtl`]: {
|
||||
direction: "rtl"
|
||||
},
|
||||
"&-disabled": {
|
||||
cursor: "not-allowed",
|
||||
color: token.colorTextDisabled
|
||||
},
|
||||
"&::after": {
|
||||
display: "inline-block",
|
||||
width: 0,
|
||||
overflow: "hidden",
|
||||
content: '"\\a0"'
|
||||
},
|
||||
// hashId 在 wrapper 上,只能铺平
|
||||
[`${componentCls}-checked::after`]: {
|
||||
position: "absolute",
|
||||
insetBlockStart: 0,
|
||||
insetInlineStart: 0,
|
||||
width: "100%",
|
||||
height: "100%",
|
||||
border: `${lineWidth}px ${lineType} ${radioCheckedColor}`,
|
||||
borderRadius: "50%",
|
||||
visibility: "hidden",
|
||||
animationName: antRadioEffect,
|
||||
animationDuration: motionDurationSlow,
|
||||
animationTimingFunction: motionEaseInOut,
|
||||
animationFillMode: "both",
|
||||
content: '""'
|
||||
},
|
||||
[componentCls]: _extends(_extends({}, resetComponent(token)), {
|
||||
position: "relative",
|
||||
display: "inline-block",
|
||||
outline: "none",
|
||||
cursor: "pointer",
|
||||
alignSelf: "center"
|
||||
}),
|
||||
[`${componentCls}-wrapper:hover &,
|
||||
&:hover ${radioInnerPrefixCls}`]: {
|
||||
borderColor: radioCheckedColor
|
||||
},
|
||||
[`${componentCls}-input:focus-visible + ${radioInnerPrefixCls}`]: _extends({}, genFocusOutline(token)),
|
||||
[`${componentCls}:hover::after, ${componentCls}-wrapper:hover &::after`]: {
|
||||
visibility: "visible"
|
||||
},
|
||||
[`${componentCls}-inner`]: {
|
||||
"&::after": {
|
||||
boxSizing: "border-box",
|
||||
position: "absolute",
|
||||
insetBlockStart: "50%",
|
||||
insetInlineStart: "50%",
|
||||
display: "block",
|
||||
width: radioSize,
|
||||
height: radioSize,
|
||||
marginBlockStart: radioSize / -2,
|
||||
marginInlineStart: radioSize / -2,
|
||||
backgroundColor: wireframe ? radioCheckedColor : colorWhite,
|
||||
borderBlockStart: 0,
|
||||
borderInlineStart: 0,
|
||||
borderRadius: radioSize,
|
||||
transform: "scale(0)",
|
||||
opacity: 0,
|
||||
transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}`,
|
||||
content: '""'
|
||||
},
|
||||
boxSizing: "border-box",
|
||||
position: "relative",
|
||||
insetBlockStart: 0,
|
||||
insetInlineStart: 0,
|
||||
display: "block",
|
||||
width: radioSize,
|
||||
height: radioSize,
|
||||
backgroundColor: radioButtonBg,
|
||||
borderColor: colorBorder,
|
||||
borderStyle: "solid",
|
||||
borderWidth: lineWidth,
|
||||
borderRadius: "50%",
|
||||
transition: `all ${motionDurationMid}`
|
||||
},
|
||||
[`${componentCls}-input`]: {
|
||||
position: "absolute",
|
||||
insetBlockStart: 0,
|
||||
insetInlineEnd: 0,
|
||||
insetBlockEnd: 0,
|
||||
insetInlineStart: 0,
|
||||
zIndex: 1,
|
||||
cursor: "pointer",
|
||||
opacity: 0
|
||||
},
|
||||
// 选中状态
|
||||
[`${componentCls}-checked`]: {
|
||||
[radioInnerPrefixCls]: {
|
||||
borderColor: radioCheckedColor,
|
||||
backgroundColor: wireframe ? radioButtonBg : radioCheckedColor,
|
||||
"&::after": {
|
||||
transform: `scale(${radioDotSize / radioSize})`,
|
||||
opacity: 1,
|
||||
transition: `all ${motionDurationSlow} ${motionEaseInOutCirc}`
|
||||
}
|
||||
}
|
||||
},
|
||||
[`${componentCls}-disabled`]: {
|
||||
cursor: "not-allowed",
|
||||
[radioInnerPrefixCls]: {
|
||||
backgroundColor: colorBgContainerDisabled,
|
||||
borderColor: colorBorder,
|
||||
cursor: "not-allowed",
|
||||
"&::after": {
|
||||
backgroundColor: radioDotDisabledColor
|
||||
}
|
||||
},
|
||||
[`${componentCls}-input`]: {
|
||||
cursor: "not-allowed"
|
||||
},
|
||||
[`${componentCls}-disabled + span`]: {
|
||||
color: colorTextDisabled,
|
||||
cursor: "not-allowed"
|
||||
},
|
||||
[`&${componentCls}-checked`]: {
|
||||
[radioInnerPrefixCls]: {
|
||||
"&::after": {
|
||||
transform: `scale(${radioDotDisabledSize / radioSize})`
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
[`span${componentCls} + *`]: {
|
||||
paddingInlineStart: paddingXS,
|
||||
paddingInlineEnd: paddingXS
|
||||
}
|
||||
})
|
||||
};
|
||||
};
|
||||
const getRadioButtonStyle = (token) => {
|
||||
const {
|
||||
radioButtonColor,
|
||||
controlHeight,
|
||||
componentCls,
|
||||
lineWidth,
|
||||
lineType,
|
||||
colorBorder,
|
||||
motionDurationSlow,
|
||||
motionDurationMid,
|
||||
radioButtonPaddingHorizontal,
|
||||
fontSize,
|
||||
radioButtonBg,
|
||||
fontSizeLG,
|
||||
controlHeightLG,
|
||||
controlHeightSM,
|
||||
paddingXS,
|
||||
borderRadius,
|
||||
borderRadiusSM,
|
||||
borderRadiusLG,
|
||||
radioCheckedColor,
|
||||
radioButtonCheckedBg,
|
||||
radioButtonHoverColor,
|
||||
radioButtonActiveColor,
|
||||
radioSolidCheckedColor,
|
||||
colorTextDisabled,
|
||||
colorBgContainerDisabled,
|
||||
radioDisabledButtonCheckedColor,
|
||||
radioDisabledButtonCheckedBg
|
||||
} = token;
|
||||
return {
|
||||
[`${componentCls}-button-wrapper`]: {
|
||||
position: "relative",
|
||||
display: "inline-block",
|
||||
height: controlHeight,
|
||||
margin: 0,
|
||||
paddingInline: radioButtonPaddingHorizontal,
|
||||
paddingBlock: 0,
|
||||
color: radioButtonColor,
|
||||
fontSize,
|
||||
lineHeight: `${controlHeight - lineWidth * 2}px`,
|
||||
background: radioButtonBg,
|
||||
border: `${lineWidth}px ${lineType} ${colorBorder}`,
|
||||
// strange align fix for chrome but works
|
||||
// https://gw.alipayobjects.com/zos/rmsportal/VFTfKXJuogBAXcvfAUWJ.gif
|
||||
borderBlockStartWidth: lineWidth + 0.02,
|
||||
borderInlineStartWidth: 0,
|
||||
borderInlineEndWidth: lineWidth,
|
||||
cursor: "pointer",
|
||||
transition: [`color ${motionDurationMid}`, `background ${motionDurationMid}`, `border-color ${motionDurationMid}`, `box-shadow ${motionDurationMid}`].join(","),
|
||||
a: {
|
||||
color: radioButtonColor
|
||||
},
|
||||
[`> ${componentCls}-button`]: {
|
||||
position: "absolute",
|
||||
insetBlockStart: 0,
|
||||
insetInlineStart: 0,
|
||||
zIndex: -1,
|
||||
width: "100%",
|
||||
height: "100%"
|
||||
},
|
||||
"&:not(:first-child)": {
|
||||
"&::before": {
|
||||
position: "absolute",
|
||||
insetBlockStart: -lineWidth,
|
||||
insetInlineStart: -lineWidth,
|
||||
display: "block",
|
||||
boxSizing: "content-box",
|
||||
width: 1,
|
||||
height: "100%",
|
||||
paddingBlock: lineWidth,
|
||||
paddingInline: 0,
|
||||
backgroundColor: colorBorder,
|
||||
transition: `background-color ${motionDurationSlow}`,
|
||||
content: '""'
|
||||
}
|
||||
},
|
||||
"&:first-child": {
|
||||
borderInlineStart: `${lineWidth}px ${lineType} ${colorBorder}`,
|
||||
borderStartStartRadius: borderRadius,
|
||||
borderEndStartRadius: borderRadius
|
||||
},
|
||||
"&:last-child": {
|
||||
borderStartEndRadius: borderRadius,
|
||||
borderEndEndRadius: borderRadius
|
||||
},
|
||||
"&:first-child:last-child": {
|
||||
borderRadius
|
||||
},
|
||||
[`${componentCls}-group-large &`]: {
|
||||
height: controlHeightLG,
|
||||
fontSize: fontSizeLG,
|
||||
lineHeight: `${controlHeightLG - lineWidth * 2}px`,
|
||||
"&:first-child": {
|
||||
borderStartStartRadius: borderRadiusLG,
|
||||
borderEndStartRadius: borderRadiusLG
|
||||
},
|
||||
"&:last-child": {
|
||||
borderStartEndRadius: borderRadiusLG,
|
||||
borderEndEndRadius: borderRadiusLG
|
||||
}
|
||||
},
|
||||
[`${componentCls}-group-small &`]: {
|
||||
height: controlHeightSM,
|
||||
paddingInline: paddingXS - lineWidth,
|
||||
paddingBlock: 0,
|
||||
lineHeight: `${controlHeightSM - lineWidth * 2}px`,
|
||||
"&:first-child": {
|
||||
borderStartStartRadius: borderRadiusSM,
|
||||
borderEndStartRadius: borderRadiusSM
|
||||
},
|
||||
"&:last-child": {
|
||||
borderStartEndRadius: borderRadiusSM,
|
||||
borderEndEndRadius: borderRadiusSM
|
||||
}
|
||||
},
|
||||
"&:hover": {
|
||||
position: "relative",
|
||||
color: radioCheckedColor
|
||||
},
|
||||
"&:has(:focus-visible)": _extends({}, genFocusOutline(token)),
|
||||
[`${componentCls}-inner, input[type='checkbox'], input[type='radio']`]: {
|
||||
width: 0,
|
||||
height: 0,
|
||||
opacity: 0,
|
||||
pointerEvents: "none"
|
||||
},
|
||||
[`&-checked:not(${componentCls}-button-wrapper-disabled)`]: {
|
||||
zIndex: 1,
|
||||
color: radioCheckedColor,
|
||||
background: radioButtonCheckedBg,
|
||||
borderColor: radioCheckedColor,
|
||||
"&::before": {
|
||||
backgroundColor: radioCheckedColor
|
||||
},
|
||||
"&:first-child": {
|
||||
borderColor: radioCheckedColor
|
||||
},
|
||||
"&:hover": {
|
||||
color: radioButtonHoverColor,
|
||||
borderColor: radioButtonHoverColor,
|
||||
"&::before": {
|
||||
backgroundColor: radioButtonHoverColor
|
||||
}
|
||||
},
|
||||
"&:active": {
|
||||
color: radioButtonActiveColor,
|
||||
borderColor: radioButtonActiveColor,
|
||||
"&::before": {
|
||||
backgroundColor: radioButtonActiveColor
|
||||
}
|
||||
}
|
||||
},
|
||||
[`${componentCls}-group-solid &-checked:not(${componentCls}-button-wrapper-disabled)`]: {
|
||||
color: radioSolidCheckedColor,
|
||||
background: radioCheckedColor,
|
||||
borderColor: radioCheckedColor,
|
||||
"&:hover": {
|
||||
color: radioSolidCheckedColor,
|
||||
background: radioButtonHoverColor,
|
||||
borderColor: radioButtonHoverColor
|
||||
},
|
||||
"&:active": {
|
||||
color: radioSolidCheckedColor,
|
||||
background: radioButtonActiveColor,
|
||||
borderColor: radioButtonActiveColor
|
||||
}
|
||||
},
|
||||
"&-disabled": {
|
||||
color: colorTextDisabled,
|
||||
backgroundColor: colorBgContainerDisabled,
|
||||
borderColor: colorBorder,
|
||||
cursor: "not-allowed",
|
||||
"&:first-child, &:hover": {
|
||||
color: colorTextDisabled,
|
||||
backgroundColor: colorBgContainerDisabled,
|
||||
borderColor: colorBorder
|
||||
}
|
||||
},
|
||||
[`&-disabled${componentCls}-button-wrapper-checked`]: {
|
||||
color: radioDisabledButtonCheckedColor,
|
||||
backgroundColor: radioDisabledButtonCheckedBg,
|
||||
borderColor: colorBorder,
|
||||
boxShadow: "none"
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const useStyle = genComponentStyleHook("Radio", (token) => {
|
||||
const {
|
||||
padding,
|
||||
lineWidth,
|
||||
controlItemBgActiveDisabled,
|
||||
colorTextDisabled,
|
||||
colorBgContainer,
|
||||
fontSizeLG,
|
||||
controlOutline,
|
||||
colorPrimaryHover,
|
||||
colorPrimaryActive,
|
||||
colorText,
|
||||
colorPrimary,
|
||||
marginXS,
|
||||
controlOutlineWidth,
|
||||
colorTextLightSolid,
|
||||
wireframe
|
||||
} = token;
|
||||
const radioFocusShadow = `0 0 0 ${controlOutlineWidth}px ${controlOutline}`;
|
||||
const radioButtonFocusShadow = radioFocusShadow;
|
||||
const radioSize = fontSizeLG;
|
||||
const dotPadding = 4;
|
||||
const radioDotDisabledSize = radioSize - dotPadding * 2;
|
||||
const radioDotSize = wireframe ? radioDotDisabledSize : radioSize - (dotPadding + lineWidth) * 2;
|
||||
const radioCheckedColor = colorPrimary;
|
||||
const radioButtonColor = colorText;
|
||||
const radioButtonHoverColor = colorPrimaryHover;
|
||||
const radioButtonActiveColor = colorPrimaryActive;
|
||||
const radioButtonPaddingHorizontal = padding - lineWidth;
|
||||
const radioDisabledButtonCheckedColor = colorTextDisabled;
|
||||
const radioWrapperMarginRight = marginXS;
|
||||
const radioToken = merge(token, {
|
||||
radioFocusShadow,
|
||||
radioButtonFocusShadow,
|
||||
radioSize,
|
||||
radioDotSize,
|
||||
radioDotDisabledSize,
|
||||
radioCheckedColor,
|
||||
radioDotDisabledColor: colorTextDisabled,
|
||||
radioSolidCheckedColor: colorTextLightSolid,
|
||||
radioButtonBg: colorBgContainer,
|
||||
radioButtonCheckedBg: colorBgContainer,
|
||||
radioButtonColor,
|
||||
radioButtonHoverColor,
|
||||
radioButtonActiveColor,
|
||||
radioButtonPaddingHorizontal,
|
||||
radioDisabledButtonCheckedBg: controlItemBgActiveDisabled,
|
||||
radioDisabledButtonCheckedColor,
|
||||
radioWrapperMarginRight
|
||||
});
|
||||
return [getGroupRadioStyle(radioToken), getRadioBasicStyle(radioToken), getRadioButtonStyle(radioToken)];
|
||||
});
|
||||
var __rest = function(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
const radioProps = () => ({
|
||||
prefixCls: String,
|
||||
checked: booleanType(),
|
||||
disabled: booleanType(),
|
||||
isGroup: booleanType(),
|
||||
value: PropTypes.any,
|
||||
name: String,
|
||||
id: String,
|
||||
autofocus: booleanType(),
|
||||
onChange: functionType(),
|
||||
onFocus: functionType(),
|
||||
onBlur: functionType(),
|
||||
onClick: functionType(),
|
||||
"onUpdate:checked": functionType(),
|
||||
"onUpdate:value": functionType()
|
||||
});
|
||||
const Radio = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ARadio",
|
||||
inheritAttrs: false,
|
||||
props: radioProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
emit,
|
||||
expose,
|
||||
slots,
|
||||
attrs
|
||||
} = _ref;
|
||||
const formItemContext = useInjectFormItemContext();
|
||||
const formItemInputContext = FormItemInputContext.useInject();
|
||||
const radioOptionTypeContext = useInjectRadioOptionTypeContext();
|
||||
const radioGroupContext = useInjectRadioGroupContext();
|
||||
const disabledContext = useInjectDisabled();
|
||||
const mergedDisabled = computed(() => {
|
||||
var _a;
|
||||
return (_a = disabled.value) !== null && _a !== void 0 ? _a : disabledContext.value;
|
||||
});
|
||||
const vcCheckbox = ref();
|
||||
const {
|
||||
prefixCls: radioPrefixCls,
|
||||
direction,
|
||||
disabled
|
||||
} = useConfigInject("radio", props);
|
||||
const prefixCls = computed(() => (radioGroupContext === null || radioGroupContext === void 0 ? void 0 : radioGroupContext.optionType.value) === "button" || radioOptionTypeContext === "button" ? `${radioPrefixCls.value}-button` : radioPrefixCls.value);
|
||||
const contextDisabled = useInjectDisabled();
|
||||
const [wrapSSR, hashId] = useStyle(radioPrefixCls);
|
||||
const focus = () => {
|
||||
vcCheckbox.value.focus();
|
||||
};
|
||||
const blur = () => {
|
||||
vcCheckbox.value.blur();
|
||||
};
|
||||
expose({
|
||||
focus,
|
||||
blur
|
||||
});
|
||||
const handleChange = (event) => {
|
||||
const targetChecked = event.target.checked;
|
||||
emit("update:checked", targetChecked);
|
||||
emit("update:value", targetChecked);
|
||||
emit("change", event);
|
||||
formItemContext.onFieldChange();
|
||||
};
|
||||
const onChange = (e) => {
|
||||
emit("change", e);
|
||||
if (radioGroupContext && radioGroupContext.onChange) {
|
||||
radioGroupContext.onChange(e);
|
||||
}
|
||||
};
|
||||
return () => {
|
||||
var _a;
|
||||
const radioGroup = radioGroupContext;
|
||||
const {
|
||||
prefixCls: customizePrefixCls,
|
||||
id = formItemContext.id.value
|
||||
} = props, restProps = __rest(props, ["prefixCls", "id"]);
|
||||
const rProps = _extends(_extends({
|
||||
prefixCls: prefixCls.value,
|
||||
id
|
||||
}, omit(restProps, ["onUpdate:checked", "onUpdate:value"])), {
|
||||
disabled: (_a = disabled.value) !== null && _a !== void 0 ? _a : contextDisabled.value
|
||||
});
|
||||
if (radioGroup) {
|
||||
rProps.name = radioGroup.name.value;
|
||||
rProps.onChange = onChange;
|
||||
rProps.checked = props.value === radioGroup.value.value;
|
||||
rProps.disabled = mergedDisabled.value || radioGroup.disabled.value;
|
||||
} else {
|
||||
rProps.onChange = handleChange;
|
||||
}
|
||||
const wrapperClassString = classNames({
|
||||
[`${prefixCls.value}-wrapper`]: true,
|
||||
[`${prefixCls.value}-wrapper-checked`]: rProps.checked,
|
||||
[`${prefixCls.value}-wrapper-disabled`]: rProps.disabled,
|
||||
[`${prefixCls.value}-wrapper-rtl`]: direction.value === "rtl",
|
||||
[`${prefixCls.value}-wrapper-in-form-item`]: formItemInputContext.isFormItemInput
|
||||
}, attrs.class, hashId.value);
|
||||
return wrapSSR(createVNode("label", _objectSpread(_objectSpread({}, attrs), {}, {
|
||||
"class": wrapperClassString
|
||||
}), [createVNode(VcCheckbox, _objectSpread(_objectSpread({}, rProps), {}, {
|
||||
"type": "radio",
|
||||
"ref": vcCheckbox
|
||||
}), null), slots.default && createVNode("span", null, [slots.default()])]));
|
||||
};
|
||||
}
|
||||
});
|
||||
const radioGroupProps = () => ({
|
||||
prefixCls: String,
|
||||
value: PropTypes.any,
|
||||
size: stringType(),
|
||||
options: arrayType(),
|
||||
disabled: booleanType(),
|
||||
name: String,
|
||||
buttonStyle: stringType("outline"),
|
||||
id: String,
|
||||
optionType: stringType("default"),
|
||||
onChange: functionType(),
|
||||
"onUpdate:value": functionType()
|
||||
});
|
||||
const __nuxt_component_1 = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ARadioGroup",
|
||||
inheritAttrs: false,
|
||||
props: radioGroupProps(),
|
||||
// emits: ['update:value', 'change'],
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
emit,
|
||||
attrs
|
||||
} = _ref;
|
||||
const formItemContext = useInjectFormItemContext();
|
||||
const {
|
||||
prefixCls,
|
||||
direction,
|
||||
size
|
||||
} = useConfigInject("radio", props);
|
||||
const [wrapSSR, hashId] = useStyle(prefixCls);
|
||||
const stateValue = ref(props.value);
|
||||
const updatingValue = ref(false);
|
||||
watch(() => props.value, (val) => {
|
||||
stateValue.value = val;
|
||||
updatingValue.value = false;
|
||||
});
|
||||
const onRadioChange = (ev) => {
|
||||
const lastValue = stateValue.value;
|
||||
const {
|
||||
value
|
||||
} = ev.target;
|
||||
if (!("value" in props)) {
|
||||
stateValue.value = value;
|
||||
}
|
||||
if (!updatingValue.value && value !== lastValue) {
|
||||
updatingValue.value = true;
|
||||
emit("update:value", value);
|
||||
emit("change", ev);
|
||||
formItemContext.onFieldChange();
|
||||
}
|
||||
nextTick(() => {
|
||||
updatingValue.value = false;
|
||||
});
|
||||
};
|
||||
useProvideRadioGroupContext({
|
||||
onChange: onRadioChange,
|
||||
value: stateValue,
|
||||
disabled: computed(() => props.disabled),
|
||||
name: computed(() => props.name),
|
||||
optionType: computed(() => props.optionType)
|
||||
});
|
||||
return () => {
|
||||
var _a;
|
||||
const {
|
||||
options,
|
||||
buttonStyle,
|
||||
id = formItemContext.id.value
|
||||
} = props;
|
||||
const groupPrefixCls = `${prefixCls.value}-group`;
|
||||
const classString = classNames(groupPrefixCls, `${groupPrefixCls}-${buttonStyle}`, {
|
||||
[`${groupPrefixCls}-${size.value}`]: size.value,
|
||||
[`${groupPrefixCls}-rtl`]: direction.value === "rtl"
|
||||
}, attrs.class, hashId.value);
|
||||
let children = null;
|
||||
if (options && options.length > 0) {
|
||||
children = options.map((option) => {
|
||||
if (typeof option === "string" || typeof option === "number") {
|
||||
return createVNode(Radio, {
|
||||
"key": option,
|
||||
"prefixCls": prefixCls.value,
|
||||
"disabled": props.disabled,
|
||||
"value": option,
|
||||
"checked": stateValue.value === option
|
||||
}, {
|
||||
default: () => [option]
|
||||
});
|
||||
}
|
||||
const {
|
||||
value,
|
||||
disabled,
|
||||
label
|
||||
} = option;
|
||||
return createVNode(Radio, {
|
||||
"key": `radio-group-value-options-${value}`,
|
||||
"prefixCls": prefixCls.value,
|
||||
"disabled": disabled || props.disabled,
|
||||
"value": value,
|
||||
"checked": stateValue.value === value
|
||||
}, {
|
||||
default: () => [label]
|
||||
});
|
||||
});
|
||||
} else {
|
||||
children = (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);
|
||||
}
|
||||
return wrapSSR(createVNode("div", _objectSpread(_objectSpread({}, attrs), {}, {
|
||||
"class": classString,
|
||||
"id": id
|
||||
}), [children]));
|
||||
};
|
||||
}
|
||||
});
|
||||
const __nuxt_component_2 = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ARadioButton",
|
||||
inheritAttrs: false,
|
||||
props: radioProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
attrs
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls
|
||||
} = useConfigInject("radio", props);
|
||||
useProvideRadioOptionTypeContext("button");
|
||||
return () => {
|
||||
var _a;
|
||||
return createVNode(Radio, _objectSpread(_objectSpread(_objectSpread({}, attrs), props), {}, {
|
||||
"prefixCls": prefixCls.value
|
||||
}), {
|
||||
default: () => [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]
|
||||
});
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
export { Radio as R, __nuxt_component_1 as _, __nuxt_component_2 as a };
|
||||
@@ -0,0 +1,111 @@
|
||||
import { l as loadGray, _ as __nuxt_component_0 } from './gray-wOBznZcb.mjs';
|
||||
import { u as useRouter$1, a as useConfigStore, m as useIntersectionObserver, e as loading, b as useUserStore } from './server.mjs';
|
||||
import { defineComponent, ref, resolveDirective, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderList, ssrGetDirectiveProps, ssrInterpolate, ssrRenderAttr, ssrRenderStyle, ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { defineStore } from 'pinia';
|
||||
import { g as getUserSaved } from './save-3yOnAiJS.mjs';
|
||||
|
||||
const useSavedPostStore = defineStore("saved", () => {
|
||||
const savedPosts = ref([]);
|
||||
const endPage = ref(false);
|
||||
useConfigStore();
|
||||
const currentPage = ref(0);
|
||||
const limit = ref(12);
|
||||
const total = ref(0);
|
||||
const user = useUserStore();
|
||||
async function loadPosts() {
|
||||
try {
|
||||
if (!endPage.value) {
|
||||
loading.value = true;
|
||||
const res = await getUserSaved(user.user?.id, ++currentPage.value, limit.value);
|
||||
if (res?.data?.length < limit.value)
|
||||
endPage.value = true;
|
||||
const products = res?.data.map((x) => x.products);
|
||||
savedPosts.value.push(...products ?? []);
|
||||
total.value = res?.count ?? 0;
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
function reset() {
|
||||
currentPage.value = 0;
|
||||
savedPosts.value = [];
|
||||
total.value = 0;
|
||||
endPage.value = false;
|
||||
}
|
||||
return {
|
||||
loadPosts,
|
||||
savedPosts,
|
||||
reset
|
||||
};
|
||||
});
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "SavedList",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useRouter$1();
|
||||
const config = useConfigStore();
|
||||
const userSavedPost = useSavedPostStore();
|
||||
const videoThumbnails = ref({});
|
||||
const observer = ref();
|
||||
useIntersectionObserver(observer, ([{ isIntersecting }]) => {
|
||||
if (isIntersecting) {
|
||||
setTimeout(() => {
|
||||
userSavedPost.loadPosts();
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_SquarePostSkeleton = __nuxt_component_0;
|
||||
const _directive_lazy = resolveDirective("lazy");
|
||||
let _temp0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: ["flex flex-col gap-2 min-h-50vh", unref(userSavedPost).savedPosts?.length > 0 ? "" : "justify-center"]
|
||||
}, _attrs))}>`);
|
||||
if (!("loading" in _ctx ? _ctx.loading : unref(loading))) {
|
||||
_push(`<!--[--><div class="w-full grid grid-cols-3 gap-2px"><!--[-->`);
|
||||
ssrRenderList(unref(userSavedPost).savedPosts, (post, i) => {
|
||||
_push(`<div class="w-full aspect-square relative">`);
|
||||
if (post.files?.length) {
|
||||
_push(`<!--[-->`);
|
||||
if (post.files[0]?.type === "image") {
|
||||
_push(`<img${ssrRenderAttrs(_temp0 = mergeProps({
|
||||
class: "w-full h-full object-cover",
|
||||
alt: "Post Image"
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(config).useDataStorage(post.files[0].url), loading: unref(loadGray), error: unref(loadGray) })))}>${"textContent" in _temp0 ? ssrInterpolate(_temp0.textContent) : _temp0.innerHTML ?? ""}`);
|
||||
} else if (post.files[0]?.type === "video") {
|
||||
_push(`<div class="relative w-full h-full"><video${ssrRenderAttr("src", post.files[0]?.url)} class="hidden"></video><img${ssrRenderAttr("src", videoThumbnails.value[post.files[0]?.url])} class="w-full h-full object-cover" alt="Video Thumbnail"><div class="absolute inset-0 flex items-center justify-center bg-black bg-opacity-30"><svg class="w-12 h-12 text-white" fill="currentColor" viewBox="0 0 24 24"><path d="M8 5v14l11-7z"></path></svg></div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
});
|
||||
_push(`<!--]--></div><div style="${ssrRenderStyle(!("loading" in _ctx ? _ctx.loading : unref(loading)) ? null : { display: "none" })}" class="w-full opacity-0 relative"> load </div>`);
|
||||
if ("loading" in _ctx ? _ctx.loading : unref(loading)) {
|
||||
_push(ssrRenderComponent(_component_SquarePostSkeleton, null, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/base/pages/statisticsList/components/SavedList.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as _ };
|
||||
@@ -0,0 +1,24 @@
|
||||
import { a as useConfigStore, _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "SearchButton",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useConfigStore();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_client_only = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_client_only, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/SearchButton.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const SearchButton = Object.assign(_sfc_main, { __name: "SearchButton" });
|
||||
|
||||
export { SearchButton as S };
|
||||
@@ -0,0 +1,92 @@
|
||||
import { defineComponent, resolveDirective, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrGetDirectiveProps, ssrInterpolate, ssrRenderAttr, ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { e as empty_user } from './empty_user-DSxcM_ac.mjs';
|
||||
import { u as useRouter$1, a as useConfigStore } from './server.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
|
||||
const _imports_0 = "data:image/svg+xml,%3csvg%20fill='white'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24px'%20height='24px'%3e%3cpath%20d='M12,2C6.477,2,2,6.477,2,12s4.477,10,10,10s10-4.477,10-10S17.523,2,12,2z%20M16,13h-3v3c0,0.552-0.448,1-1,1h0%20c-0.552,0-1-0.448-1-1v-3H8c-0.552,0-1-0.448-1-1v0c0-0.552,0.448-1,1-1h3V8c0-0.552,0.448-1,1-1h0c0.552,0,1,0.448,1,1v3h3%20c0.552,0,1,0.448,1,1v0C17,12.552,16.552,13,16,13z'/%3e%3c/svg%3e";
|
||||
const _imports_1 = "data:image/svg+xml,%3c?xml%20version='1.0'?%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24px'%20height='24px'%3e%3cpath%20d='M12,2C6.477,2,2,6.477,2,12s4.477,10,10,10s10-4.477,10-10S17.523,2,12,2z%20M16,13h-3v3c0,0.552-0.448,1-1,1h0%20c-0.552,0-1-0.448-1-1v-3H8c-0.552,0-1-0.448-1-1v0c0-0.552,0.448-1,1-1h3V8c0-0.552,0.448-1,1-1h0c0.552,0,1,0.448,1,1v3h3%20c0.552,0,1,0.448,1,1v0C17,12.552,16.552,13,16,13z'/%3e%3c/svg%3e";
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "add2",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const config = useConfigStore();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
if (unref(config).isNightStore) {
|
||||
_push(`<img${ssrRenderAttrs(mergeProps({
|
||||
src: _imports_0,
|
||||
alt: "comment",
|
||||
"cursor-pointer": ""
|
||||
}, _attrs))}>`);
|
||||
} else {
|
||||
_push(`<img${ssrRenderAttrs(mergeProps({
|
||||
src: _imports_1,
|
||||
alt: "comment",
|
||||
"cursor-pointer": ""
|
||||
}, _attrs))}>`);
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
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("assets/img/icons/add2.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "UserProfilePic",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
width: { default: 80 },
|
||||
src: { default: empty_user },
|
||||
seenStory: { type: Boolean, default: false },
|
||||
justShowProfile: { type: Boolean },
|
||||
showAdd: { type: Boolean, default: false }
|
||||
},
|
||||
setup(__props) {
|
||||
const router = useRouter$1();
|
||||
const props = __props;
|
||||
const config = useConfigStore();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _directive_lazy = resolveDirective("lazy");
|
||||
let _temp0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: "circle",
|
||||
style: { width: props.width + "px", height: props.width + "px" }
|
||||
}, _attrs))} data-v-c61670c3><img${ssrRenderAttrs(_temp0 = mergeProps({
|
||||
alt: "instagram",
|
||||
class: "story_img object-cover"
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(config).useDataStorage(props.src), loading: unref(empty_user), error: unref(empty_user) })))} data-v-c61670c3>${"textContent" in _temp0 ? ssrInterpolate(_temp0.textContent) : _temp0.innerHTML ?? ""}`);
|
||||
if (!_ctx.justShowProfile) {
|
||||
_push(`<!--[-->`);
|
||||
if (_ctx.seenStory) {
|
||||
_push(`<svg viewBox="0 0 100 100" data-v-c61670c3><defs data-v-c61670c3><linearGradient id="gradient-id" gradientTransform="rotate(45)" data-v-c61670c3><stop offset="0%" stop-color="lightgray" data-v-c61670c3></stop></linearGradient></defs><circle cx="50" cy="50" r="48" fill="none" stroke="url(#gradient-id)" stroke-width="4" stroke-linecap="round" stroke-dasharray="300" stroke-dashoffset="0" data-v-c61670c3></circle></svg>`);
|
||||
} else {
|
||||
_push(`<svg class="non-select"${ssrRenderAttr("width", `${props.width}`)}${ssrRenderAttr("height", props.width)} viewBox="0 0 100 100" data-v-c61670c3><defs data-v-c61670c3><linearGradient id="gradient-id" gradientTransform="rotate(45)" data-v-c61670c3><stop offset="0%" stop-color="#f09433" data-v-c61670c3></stop><stop offset="25%" stop-color="#e6683c" data-v-c61670c3></stop><stop offset="50%" stop-color="#dc2743" data-v-c61670c3></stop><stop offset="75%" stop-color="#cc2366" data-v-c61670c3></stop><stop offset="100%" stop-color="#bc1888" data-v-c61670c3></stop> 88/88 </linearGradient></defs><circle cx="50" cy="50" r="48" fill="none" stroke="url(#gradient-id)" stroke-width="4" stroke-linecap="round" stroke-dasharray="300" stroke-dashoffset="0" data-v-c61670c3></circle></svg>`);
|
||||
}
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (_ctx.showAdd) {
|
||||
_push(ssrRenderComponent(_sfc_main$1, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-story" }),
|
||||
class: ["absolute top-50px border-1 border-solid rounded-full", [unref(config).isNightStore ? "bg-black border-black" : "bg-white border-white", unref(config).isRTL ? "-left-5px" : "-right-5px"]]
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/UserProfilePic.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const UserProfilePic = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main, [["__scopeId", "data-v-c61670c3"]]), { __name: "UserProfilePic" });
|
||||
|
||||
export { UserProfilePic as U };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "[id]",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/highlight/edit/[id].vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "[id]",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/cart/[id].vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,87 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-CwDNc1so.mjs';
|
||||
import '@ant-design/icons-vue';
|
||||
import './BasicIconOld-Booq7UXp.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import 'unhead/utils';
|
||||
import './empty_user-DSxcM_ac.mjs';
|
||||
import './inputRules-Cr4Uiro2.mjs';
|
||||
import './BasicInput-CgQV_gT5.mjs';
|
||||
import './usePrice-CFcNV1RQ.mjs';
|
||||
import './index-D4HrLPqa.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './index-BTlbWWOl.mjs';
|
||||
import 'lodash-es/isPlainObject.js';
|
||||
import 'resize-observer-polyfill';
|
||||
import './index-DN2Eqyc3.mjs';
|
||||
import 'dom-align';
|
||||
import './BaseDatePicker-D3_e-ycp.mjs';
|
||||
import 'moment-jalaali';
|
||||
import 'dayjalali';
|
||||
import './index-CnnQbQCE.mjs';
|
||||
import './useMergedState-BZEfJ8Fl.mjs';
|
||||
import './move-DCvQW68K.mjs';
|
||||
import './shallowequal-CJsWvZb3.mjs';
|
||||
import './index-C5WgqxkU.mjs';
|
||||
import './close_light-DbrEdRZI.mjs';
|
||||
import './FormItem-Uo-Qw9vC.mjs';
|
||||
import 'lodash-es/cloneDeep.js';
|
||||
import 'async-validator';
|
||||
import 'lodash-es/find.js';
|
||||
import 'lodash-es/isEqual.js';
|
||||
import 'compute-scroll-into-view';
|
||||
import 'lodash-es/intersection.js';
|
||||
import 'lodash-es/debounce.js';
|
||||
import 'lodash-es/omit.js';
|
||||
import './index-zsqPNrGJ.mjs';
|
||||
import '@vueuse/gesture';
|
||||
import '@headlessui/vue';
|
||||
import 'framesync';
|
||||
import 'popmotion';
|
||||
import 'style-value-types';
|
||||
import './BasicButton-7YIRCRg8.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import './InstaInput-Cs7_qhi7.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "[id]",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/user/edit/[id].vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,9 @@
|
||||
const _export_sfc = (sfc, props) => {
|
||||
const target = sfc.__vccOpts || sfc;
|
||||
for (const [key, val] of props) {
|
||||
target[key] = val;
|
||||
}
|
||||
return target;
|
||||
};
|
||||
|
||||
export { _export_sfc as _ };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "add",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/user/add.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "address",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/user/address.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,287 @@
|
||||
import { computed, toValue, getCurrentInstance, onServerPrefetch, ref, shallowRef, nextTick, unref, toRef } from 'vue';
|
||||
import { debounce } from 'perfect-debounce';
|
||||
import { at as useNuxtApp, au as asyncDataDefaults, av as createError } from './server.mjs';
|
||||
|
||||
function useAsyncData(...args) {
|
||||
const autoKey = typeof args[args.length - 1] === "string" ? args.pop() : void 0;
|
||||
if (_isAutoKeyNeeded(args[0], args[1])) {
|
||||
args.unshift(autoKey);
|
||||
}
|
||||
let [_key, _handler, options = {}] = args;
|
||||
const key = computed(() => toValue(_key));
|
||||
if (typeof key.value !== "string") {
|
||||
throw new TypeError("[nuxt] [useAsyncData] key must be a string.");
|
||||
}
|
||||
if (typeof _handler !== "function") {
|
||||
throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");
|
||||
}
|
||||
const nuxtApp = useNuxtApp();
|
||||
options.server ??= true;
|
||||
options.default ??= getDefault;
|
||||
options.getCachedData ??= getDefaultCachedData;
|
||||
options.lazy ??= false;
|
||||
options.immediate ??= true;
|
||||
options.deep ??= asyncDataDefaults.deep;
|
||||
options.dedupe ??= "cancel";
|
||||
options._functionName || "useAsyncData";
|
||||
nuxtApp._asyncData[key.value];
|
||||
function createInitialFetch() {
|
||||
const initialFetchOptions = { cause: "initial", dedupe: options.dedupe };
|
||||
if (!nuxtApp._asyncData[key.value]?._init) {
|
||||
initialFetchOptions.cachedData = options.getCachedData(key.value, nuxtApp, { cause: "initial" });
|
||||
nuxtApp._asyncData[key.value] = createAsyncData(nuxtApp, key.value, _handler, options, initialFetchOptions.cachedData);
|
||||
}
|
||||
return () => nuxtApp._asyncData[key.value].execute(initialFetchOptions);
|
||||
}
|
||||
const initialFetch = createInitialFetch();
|
||||
const asyncData = nuxtApp._asyncData[key.value];
|
||||
asyncData._deps++;
|
||||
const fetchOnServer = options.server !== false && nuxtApp.payload.serverRendered;
|
||||
if (fetchOnServer && options.immediate) {
|
||||
const promise = initialFetch();
|
||||
if (getCurrentInstance()) {
|
||||
onServerPrefetch(() => promise);
|
||||
} else {
|
||||
nuxtApp.hook("app:created", async () => {
|
||||
await promise;
|
||||
});
|
||||
}
|
||||
}
|
||||
const asyncReturn = {
|
||||
data: writableComputedRef(() => nuxtApp._asyncData[key.value]?.data),
|
||||
pending: writableComputedRef(() => nuxtApp._asyncData[key.value]?.pending),
|
||||
status: writableComputedRef(() => nuxtApp._asyncData[key.value]?.status),
|
||||
error: writableComputedRef(() => nuxtApp._asyncData[key.value]?.error),
|
||||
refresh: (...args2) => {
|
||||
if (!nuxtApp._asyncData[key.value]?._init) {
|
||||
const initialFetch2 = createInitialFetch();
|
||||
return initialFetch2();
|
||||
}
|
||||
return nuxtApp._asyncData[key.value].execute(...args2);
|
||||
},
|
||||
execute: (...args2) => asyncReturn.refresh(...args2),
|
||||
clear: () => {
|
||||
const entry = nuxtApp._asyncData[key.value];
|
||||
if (entry?._abortController) {
|
||||
try {
|
||||
entry._abortController.abort(new DOMException("AsyncData aborted by user.", "AbortError"));
|
||||
} finally {
|
||||
entry._abortController = void 0;
|
||||
}
|
||||
}
|
||||
clearNuxtDataByKey(nuxtApp, key.value);
|
||||
}
|
||||
};
|
||||
const asyncDataPromise = Promise.resolve(nuxtApp._asyncDataPromises[key.value]).then(() => asyncReturn);
|
||||
Object.assign(asyncDataPromise, asyncReturn);
|
||||
return asyncDataPromise;
|
||||
}
|
||||
function writableComputedRef(getter) {
|
||||
return computed({
|
||||
get() {
|
||||
return getter()?.value;
|
||||
},
|
||||
set(value) {
|
||||
const ref2 = getter();
|
||||
if (ref2) {
|
||||
ref2.value = value;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
function _isAutoKeyNeeded(keyOrFetcher, fetcher) {
|
||||
if (typeof keyOrFetcher === "string") {
|
||||
return false;
|
||||
}
|
||||
if (typeof keyOrFetcher === "object" && keyOrFetcher !== null) {
|
||||
return false;
|
||||
}
|
||||
if (typeof keyOrFetcher === "function" && typeof fetcher === "function") {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
function clearNuxtDataByKey(nuxtApp, key) {
|
||||
if (key in nuxtApp.payload.data) {
|
||||
nuxtApp.payload.data[key] = void 0;
|
||||
}
|
||||
if (key in nuxtApp.payload._errors) {
|
||||
nuxtApp.payload._errors[key] = void 0;
|
||||
}
|
||||
if (nuxtApp._asyncData[key]) {
|
||||
nuxtApp._asyncData[key].data.value = unref(nuxtApp._asyncData[key]._default());
|
||||
nuxtApp._asyncData[key].error.value = void 0;
|
||||
nuxtApp._asyncData[key].status.value = "idle";
|
||||
}
|
||||
if (key in nuxtApp._asyncDataPromises) {
|
||||
nuxtApp._asyncDataPromises[key] = void 0;
|
||||
}
|
||||
}
|
||||
function pick(obj, keys) {
|
||||
const newObj = {};
|
||||
for (const key of keys) {
|
||||
newObj[key] = obj[key];
|
||||
}
|
||||
return newObj;
|
||||
}
|
||||
function createAsyncData(nuxtApp, key, _handler, options, initialCachedData) {
|
||||
nuxtApp.payload._errors[key] ??= void 0;
|
||||
const hasCustomGetCachedData = options.getCachedData !== getDefaultCachedData;
|
||||
const handler = _handler ;
|
||||
const _ref = options.deep ? ref : shallowRef;
|
||||
const hasCachedData = initialCachedData !== void 0;
|
||||
const unsubRefreshAsyncData = nuxtApp.hook("app:data:refresh", async (keys) => {
|
||||
if (!keys || keys.includes(key)) {
|
||||
await asyncData.execute({ cause: "refresh:hook" });
|
||||
}
|
||||
});
|
||||
const asyncData = {
|
||||
data: _ref(hasCachedData ? initialCachedData : options.default()),
|
||||
pending: computed(() => asyncData.status.value === "pending"),
|
||||
error: toRef(nuxtApp.payload._errors, key),
|
||||
status: shallowRef("idle"),
|
||||
execute: (...args) => {
|
||||
const [_opts, newValue = void 0] = args;
|
||||
const opts = _opts && newValue === void 0 && typeof _opts === "object" ? _opts : {};
|
||||
if (nuxtApp._asyncDataPromises[key]) {
|
||||
if ((opts.dedupe ?? options.dedupe) === "defer") {
|
||||
return nuxtApp._asyncDataPromises[key];
|
||||
}
|
||||
}
|
||||
{
|
||||
const cachedData = "cachedData" in opts ? opts.cachedData : options.getCachedData(key, nuxtApp, { cause: opts.cause ?? "refresh:manual" });
|
||||
if (cachedData !== void 0) {
|
||||
nuxtApp.payload.data[key] = asyncData.data.value = cachedData;
|
||||
asyncData.error.value = void 0;
|
||||
asyncData.status.value = "success";
|
||||
return Promise.resolve(cachedData);
|
||||
}
|
||||
}
|
||||
if (asyncData._abortController) {
|
||||
asyncData._abortController.abort(new DOMException("AsyncData request cancelled by deduplication", "AbortError"));
|
||||
}
|
||||
asyncData._abortController = new AbortController();
|
||||
asyncData.status.value = "pending";
|
||||
const cleanupController = new AbortController();
|
||||
const promise = new Promise(
|
||||
(resolve, reject) => {
|
||||
try {
|
||||
const timeout = opts.timeout ?? options.timeout;
|
||||
const mergedSignal = mergeAbortSignals([asyncData._abortController?.signal, opts?.signal], cleanupController.signal, timeout);
|
||||
if (mergedSignal.aborted) {
|
||||
const reason = mergedSignal.reason;
|
||||
reject(reason instanceof Error ? reason : new DOMException(String(reason ?? "Aborted"), "AbortError"));
|
||||
return;
|
||||
}
|
||||
mergedSignal.addEventListener("abort", () => {
|
||||
const reason = mergedSignal.reason;
|
||||
reject(reason instanceof Error ? reason : new DOMException(String(reason ?? "Aborted"), "AbortError"));
|
||||
}, { once: true, signal: cleanupController.signal });
|
||||
return Promise.resolve(handler(nuxtApp, { signal: mergedSignal })).then(resolve, reject);
|
||||
} catch (err) {
|
||||
reject(err);
|
||||
}
|
||||
}
|
||||
).then(async (_result) => {
|
||||
let result = _result;
|
||||
if (options.transform) {
|
||||
result = await options.transform(_result);
|
||||
}
|
||||
if (options.pick) {
|
||||
result = pick(result, options.pick);
|
||||
}
|
||||
nuxtApp.payload.data[key] = result;
|
||||
asyncData.data.value = result;
|
||||
asyncData.error.value = void 0;
|
||||
asyncData.status.value = "success";
|
||||
}).catch((error) => {
|
||||
if (nuxtApp._asyncDataPromises[key] && nuxtApp._asyncDataPromises[key] !== promise) {
|
||||
return nuxtApp._asyncDataPromises[key];
|
||||
}
|
||||
if (asyncData._abortController?.signal.aborted) {
|
||||
return nuxtApp._asyncDataPromises[key];
|
||||
}
|
||||
if (typeof DOMException !== "undefined" && error instanceof DOMException && error.name === "AbortError") {
|
||||
asyncData.status.value = "idle";
|
||||
return nuxtApp._asyncDataPromises[key];
|
||||
}
|
||||
asyncData.error.value = createError(error);
|
||||
asyncData.data.value = unref(options.default());
|
||||
asyncData.status.value = "error";
|
||||
}).finally(() => {
|
||||
cleanupController.abort();
|
||||
delete nuxtApp._asyncDataPromises[key];
|
||||
});
|
||||
nuxtApp._asyncDataPromises[key] = promise;
|
||||
return nuxtApp._asyncDataPromises[key];
|
||||
},
|
||||
_execute: debounce((...args) => asyncData.execute(...args), 0, { leading: true }),
|
||||
_default: options.default,
|
||||
_deps: 0,
|
||||
_init: true,
|
||||
_hash: void 0,
|
||||
_off: () => {
|
||||
unsubRefreshAsyncData();
|
||||
if (nuxtApp._asyncData[key]?._init) {
|
||||
nuxtApp._asyncData[key]._init = false;
|
||||
}
|
||||
if (!hasCustomGetCachedData) {
|
||||
nextTick(() => {
|
||||
if (!nuxtApp._asyncData[key]?._init) {
|
||||
clearNuxtDataByKey(nuxtApp, key);
|
||||
asyncData.execute = () => Promise.resolve();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
return asyncData;
|
||||
}
|
||||
const getDefault = () => void 0;
|
||||
const getDefaultCachedData = (key, nuxtApp, ctx) => {
|
||||
if (nuxtApp.isHydrating) {
|
||||
return nuxtApp.payload.data[key];
|
||||
}
|
||||
if (ctx.cause !== "refresh:manual" && ctx.cause !== "refresh:hook") {
|
||||
return nuxtApp.static.data[key];
|
||||
}
|
||||
};
|
||||
function mergeAbortSignals(signals, cleanupSignal, timeout) {
|
||||
const list = signals.filter((s) => !!s);
|
||||
if (typeof timeout === "number" && timeout >= 0) {
|
||||
const timeoutSignal = AbortSignal.timeout?.(timeout);
|
||||
if (timeoutSignal) {
|
||||
list.push(timeoutSignal);
|
||||
}
|
||||
}
|
||||
if (AbortSignal.any) {
|
||||
return AbortSignal.any(list);
|
||||
}
|
||||
const controller = new AbortController();
|
||||
for (const sig of list) {
|
||||
if (sig.aborted) {
|
||||
const reason = sig.reason ?? new DOMException("Aborted", "AbortError");
|
||||
try {
|
||||
controller.abort(reason);
|
||||
} catch {
|
||||
controller.abort();
|
||||
}
|
||||
return controller.signal;
|
||||
}
|
||||
}
|
||||
const onAbort = () => {
|
||||
const abortedSignal = list.find((s) => s.aborted);
|
||||
const reason = abortedSignal?.reason ?? new DOMException("Aborted", "AbortError");
|
||||
try {
|
||||
controller.abort(reason);
|
||||
} catch {
|
||||
controller.abort();
|
||||
}
|
||||
};
|
||||
for (const sig of list) {
|
||||
sig.addEventListener?.("abort", onAbort, { once: true, signal: cleanupSignal });
|
||||
}
|
||||
return controller.signal;
|
||||
}
|
||||
|
||||
export { useAsyncData as u };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "attributes",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/user/attributes.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,21 @@
|
||||
import { defineComponent, resolveComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "auth",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_RouterView = resolveComponent("RouterView");
|
||||
_push(ssrRenderComponent(_component_RouterView, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/auth.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "brands",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/user/brands.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "categories",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/user/categories.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,98 @@
|
||||
import { defineStore } from 'pinia';
|
||||
import { ref, h } from 'vue';
|
||||
import { b as useUserStore, a as useConfigStore, u as useRouter$1, aG as fetchUserChats, s as supabase, aH as api, M as Button, aI as fetchOneChat } from './server.mjs';
|
||||
|
||||
const useChatStore = defineStore("chat", () => {
|
||||
const userStore = useUserStore();
|
||||
const config = useConfigStore();
|
||||
const chats = ref([]);
|
||||
const loading = ref(false);
|
||||
const currentPage = ref(0);
|
||||
const router = useRouter$1();
|
||||
const limit = ref(10);
|
||||
const endPage = ref(false);
|
||||
const setChat = (_chat) => {
|
||||
const index = chats.value.findIndex((item) => item.chat_id === _chat.chat_id);
|
||||
if (index >= 0) {
|
||||
Object.assign(chats.value[index], {
|
||||
..._chat
|
||||
});
|
||||
} else {
|
||||
chats.value.push(_chat);
|
||||
}
|
||||
};
|
||||
const setChats = (_chats) => {
|
||||
_chats.map((item) => setChat(item));
|
||||
};
|
||||
const request = async () => {
|
||||
try {
|
||||
if (!endPage.value) {
|
||||
loading.value = true;
|
||||
const res = await fetchUserChats(userStore.user.id, ++currentPage.value, limit.value);
|
||||
setChats(res);
|
||||
if (res?.length < limit.value) {
|
||||
endPage.value = true;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log("e ===>", e);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
const getChatWithId = async (chat_id) => {
|
||||
return await fetchOneChat(chat_id);
|
||||
};
|
||||
const addChatWithId = async (chat_id) => {
|
||||
chats.value.unshift(getChatWithId(chat_id));
|
||||
};
|
||||
const runChannel = () => {
|
||||
supabase.channel("realtime:chats").on(
|
||||
"postgres_changes",
|
||||
{
|
||||
event: "*",
|
||||
schema: "public",
|
||||
table: "chats"
|
||||
},
|
||||
async (payload) => {
|
||||
if (userStore.user?.id && (payload.new.user1_id == userStore.user.id || payload.new.user2_id == userStore.user.id)) {
|
||||
if (payload.eventType === "INSERT") {
|
||||
await addChatWithId(payload.new.chat_id);
|
||||
} else if (payload.eventType === "UPDATE") {
|
||||
const chat = payload.new;
|
||||
setChat(chat);
|
||||
if (chat?.last_message?.sender_id && chat?.last_message?.sender_id !== userStore.user?.id && !chat?.last_message?.is_read) {
|
||||
const key = `open${Date.now()}`;
|
||||
const getChat = await getChatWithId(chat.chat_id);
|
||||
api.open({
|
||||
message: config.useString("newMessage"),
|
||||
description: `${config.useString("YouHaveNewMessageFrom")}: ${userStore.user?.id === chat.user1_id ? getChat?.user2?.name : getChat?.user1?.name}`,
|
||||
btn: () => h(
|
||||
Button,
|
||||
{
|
||||
type: "primary",
|
||||
size: "small",
|
||||
onClick: async () => {
|
||||
api.close(key);
|
||||
await router.push({ name: "message-detail_message", query: { id: chat.chat_id } });
|
||||
}
|
||||
},
|
||||
{ default: () => config.useString("show") }
|
||||
),
|
||||
key,
|
||||
onClose: close
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
).subscribe();
|
||||
};
|
||||
return {
|
||||
chats,
|
||||
runChannel,
|
||||
request
|
||||
};
|
||||
});
|
||||
|
||||
export { useChatStore as u };
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,3 @@
|
||||
const _imports_0 = "data:image/svg+xml,%3csvg%20version='1.1'%20fill='white'%20id='Layer_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20width='122.878px'%20height='122.88px'%20viewBox='0%200%20122.878%20122.88'%20enable-background='new%200%200%20122.878%20122.88'%20xml:space='preserve'%3e%3cg%3e%3cpath%20d='M1.426,8.313c-1.901-1.901-1.901-4.984,0-6.886c1.901-1.902,4.984-1.902,6.886,0l53.127,53.127l53.127-53.127%20c1.901-1.902,4.984-1.902,6.887,0c1.901,1.901,1.901,4.985,0,6.886L68.324,61.439l53.128,53.128c1.901,1.901,1.901,4.984,0,6.886%20c-1.902,1.902-4.985,1.902-6.887,0L61.438,68.326L8.312,121.453c-1.901,1.902-4.984,1.902-6.886,0%20c-1.901-1.901-1.901-4.984,0-6.886l53.127-53.128L1.426,8.313L1.426,8.313z'/%3e%3c/g%3e%3c/svg%3e";
|
||||
|
||||
export { _imports_0 as _ };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "create",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/highlight/create.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,952 @@
|
||||
import { createVNode, defineComponent, ref, mergeProps, unref, withCtx, computed, inject, Fragment, watch, Transition, withDirectives, vShow, reactive, nextTick, useSSRContext, provide } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrRenderList, ssrRenderAttr, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { C as CustomerCard, a as CustomerCardSkeleton } from './CustomerCardSkeleton-HHHLikpL.mjs';
|
||||
import { b8 as Icon, b as useUserStore, a as useConfigStore, u as useRouter$1, z as useConfigInject, A as classNames, Q as initDefaultProps, B as genComponentStyleHook, C as merge, by as initFadeMotion, R as filterEmpty, P as PropTypes, F as functionType, a9 as objectType, G as stringType, J as resetComponent, ai as initMotion, K as Keyframe, ad as getTransitionProps, af as CloseOutlined, H as booleanType } from './server.mjs';
|
||||
import { B as BasicIconOld } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import _objectSpread$2 from '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import { _ as __nuxt_component_2, w as wrapperRaf } from './index-DN2Eqyc3.mjs';
|
||||
import { B as Badge } from './index-CY26U1sZ.mjs';
|
||||
import _extends from '@babel/runtime/helpers/esm/extends';
|
||||
import { u as useMergedState } from './useMergedState-BZEfJ8Fl.mjs';
|
||||
import './UserProfilePic-CSSFM-Xe.mjs';
|
||||
import './empty_user-DSxcM_ac.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './BasicButton-7YIRCRg8.mjs';
|
||||
import '@ant-design/icons-vue';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import 'vue-content-loader';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import 'unhead/utils';
|
||||
import 'dom-align';
|
||||
import './isNumeric-BvXfUD6Q.mjs';
|
||||
|
||||
// This icon file is generated automatically.
|
||||
var FileTextOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z" } }] }, "name": "file-text", "theme": "outlined" };
|
||||
|
||||
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } return target; }
|
||||
|
||||
function _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
var FileTextOutlined = function FileTextOutlined(props, context) {
|
||||
var p = _objectSpread$1({}, props, context.attrs);
|
||||
|
||||
return createVNode(Icon, _objectSpread$1({}, p, {
|
||||
"icon": FileTextOutlined$1
|
||||
}), null);
|
||||
};
|
||||
|
||||
FileTextOutlined.displayName = 'FileTextOutlined';
|
||||
FileTextOutlined.inheritAttrs = false;
|
||||
|
||||
// This icon file is generated automatically.
|
||||
var VerticalAlignTopOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 00-12.6 0l-112 141.7a7.98 7.98 0 006.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z" } }] }, "name": "vertical-align-top", "theme": "outlined" };
|
||||
|
||||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
|
||||
|
||||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
||||
|
||||
var VerticalAlignTopOutlined = function VerticalAlignTopOutlined(props, context) {
|
||||
var p = _objectSpread({}, props, context.attrs);
|
||||
|
||||
return createVNode(Icon, _objectSpread({}, p, {
|
||||
"icon": VerticalAlignTopOutlined$1
|
||||
}), null);
|
||||
};
|
||||
|
||||
VerticalAlignTopOutlined.displayName = 'VerticalAlignTopOutlined';
|
||||
VerticalAlignTopOutlined.inheritAttrs = false;
|
||||
|
||||
function throttleByAnimationFrame(fn) {
|
||||
let requestId;
|
||||
const later = (args) => () => {
|
||||
requestId = null;
|
||||
fn(...args);
|
||||
};
|
||||
const throttled = function() {
|
||||
if (requestId == null) {
|
||||
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
requestId = wrapperRaf(later(args));
|
||||
}
|
||||
};
|
||||
throttled.cancel = () => {
|
||||
wrapperRaf.cancel(requestId);
|
||||
requestId = null;
|
||||
};
|
||||
return throttled;
|
||||
}
|
||||
function easeInOutCubic(t, b, c, d) {
|
||||
const cc = c - b;
|
||||
t /= d / 2;
|
||||
if (t < 1) {
|
||||
return cc / 2 * t * t * t + b;
|
||||
}
|
||||
return cc / 2 * ((t -= 2) * t * t + 2) + b;
|
||||
}
|
||||
function isWindow(obj) {
|
||||
return obj !== null && obj !== void 0 && obj === obj.window;
|
||||
}
|
||||
function getScroll(target, top) {
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
function scrollTo(y) {
|
||||
let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
||||
const {
|
||||
getContainer = () => void 0,
|
||||
callback,
|
||||
duration = 450
|
||||
} = options;
|
||||
const container = getContainer();
|
||||
const scrollTop = getScroll();
|
||||
const startTime = Date.now();
|
||||
const frameFunc = () => {
|
||||
const timestamp = Date.now();
|
||||
const time = timestamp - startTime;
|
||||
const nextScrollTop = easeInOutCubic(time > duration ? duration : time, scrollTop, y, duration);
|
||||
if (isWindow(container)) {
|
||||
container.scrollTo((void 0).pageXOffset, nextScrollTop);
|
||||
} else if (container instanceof Document || container.constructor.name === "HTMLDocument") {
|
||||
container.documentElement.scrollTop = nextScrollTop;
|
||||
} else {
|
||||
container.scrollTop = nextScrollTop;
|
||||
}
|
||||
if (time < duration) {
|
||||
wrapperRaf(frameFunc);
|
||||
} else if (typeof callback === "function") {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
wrapperRaf(frameFunc);
|
||||
}
|
||||
const floatButtonProps = () => {
|
||||
return {
|
||||
prefixCls: String,
|
||||
description: PropTypes.any,
|
||||
type: stringType("default"),
|
||||
shape: stringType("circle"),
|
||||
tooltip: PropTypes.any,
|
||||
href: String,
|
||||
target: functionType(),
|
||||
badge: objectType(),
|
||||
onClick: functionType()
|
||||
};
|
||||
};
|
||||
const floatButtonContentProps = () => {
|
||||
return {
|
||||
prefixCls: stringType()
|
||||
};
|
||||
};
|
||||
const floatButtonGroupProps = () => {
|
||||
return _extends(_extends({}, floatButtonProps()), {
|
||||
// 包含的 Float Button
|
||||
// 触发方式 (有触发方式为菜单模式)
|
||||
trigger: stringType(),
|
||||
// 受控展开
|
||||
open: booleanType(),
|
||||
// 展开收起的回调
|
||||
onOpenChange: functionType(),
|
||||
"onUpdate:open": functionType()
|
||||
});
|
||||
};
|
||||
const backTopProps = () => {
|
||||
return _extends(_extends({}, floatButtonProps()), {
|
||||
prefixCls: String,
|
||||
duration: Number,
|
||||
target: functionType(),
|
||||
visibilityHeight: Number,
|
||||
onClick: functionType()
|
||||
});
|
||||
};
|
||||
const FloatButtonContent = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "AFloatButtonContent",
|
||||
inheritAttrs: false,
|
||||
props: floatButtonContentProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots
|
||||
} = _ref;
|
||||
return () => {
|
||||
var _a;
|
||||
const {
|
||||
prefixCls
|
||||
} = props;
|
||||
const description = filterEmpty((_a = slots.description) === null || _a === void 0 ? void 0 : _a.call(slots));
|
||||
return createVNode("div", _objectSpread$2(_objectSpread$2({}, attrs), {}, {
|
||||
"class": [attrs.class, `${prefixCls}-content`]
|
||||
}), [slots.icon || description.length ? createVNode(Fragment, null, [slots.icon && createVNode("div", {
|
||||
"class": `${prefixCls}-icon`
|
||||
}, [slots.icon()]), description.length ? createVNode("div", {
|
||||
"class": `${prefixCls}-description`
|
||||
}, [description]) : null]) : createVNode("div", {
|
||||
"class": `${prefixCls}-icon`
|
||||
}, [createVNode(FileTextOutlined, null, null)])]);
|
||||
};
|
||||
}
|
||||
});
|
||||
const contextKey = /* @__PURE__ */ Symbol("floatButtonGroupContext");
|
||||
const useProvideFloatButtonGroupContext = (props) => {
|
||||
provide(contextKey, props);
|
||||
return props;
|
||||
};
|
||||
const useInjectFloatButtonGroupContext = () => {
|
||||
return inject(contextKey, {
|
||||
shape: ref()
|
||||
});
|
||||
};
|
||||
const getOffset = (radius) => {
|
||||
if (radius === 0) {
|
||||
return 0;
|
||||
}
|
||||
return radius - Math.sqrt(Math.pow(radius, 2) / 2);
|
||||
};
|
||||
const initFloatButtonGroupMotion = (token) => {
|
||||
const {
|
||||
componentCls,
|
||||
floatButtonSize,
|
||||
motionDurationSlow,
|
||||
motionEaseInOutCirc
|
||||
} = token;
|
||||
const groupPrefixCls = `${componentCls}-group`;
|
||||
const moveDownIn = new Keyframe("antFloatButtonMoveDownIn", {
|
||||
"0%": {
|
||||
transform: `translate3d(0, ${floatButtonSize}px, 0)`,
|
||||
transformOrigin: "0 0",
|
||||
opacity: 0
|
||||
},
|
||||
"100%": {
|
||||
transform: "translate3d(0, 0, 0)",
|
||||
transformOrigin: "0 0",
|
||||
opacity: 1
|
||||
}
|
||||
});
|
||||
const moveDownOut = new Keyframe("antFloatButtonMoveDownOut", {
|
||||
"0%": {
|
||||
transform: "translate3d(0, 0, 0)",
|
||||
transformOrigin: "0 0",
|
||||
opacity: 1
|
||||
},
|
||||
"100%": {
|
||||
transform: `translate3d(0, ${floatButtonSize}px, 0)`,
|
||||
transformOrigin: "0 0",
|
||||
opacity: 0
|
||||
}
|
||||
});
|
||||
return [{
|
||||
[`${groupPrefixCls}-wrap`]: _extends({}, initMotion(`${groupPrefixCls}-wrap`, moveDownIn, moveDownOut, motionDurationSlow, true))
|
||||
}, {
|
||||
[`${groupPrefixCls}-wrap`]: {
|
||||
[`
|
||||
&${groupPrefixCls}-wrap-enter,
|
||||
&${groupPrefixCls}-wrap-appear
|
||||
`]: {
|
||||
opacity: 0,
|
||||
animationTimingFunction: motionEaseInOutCirc
|
||||
},
|
||||
[`&${groupPrefixCls}-wrap-leave`]: {
|
||||
animationTimingFunction: motionEaseInOutCirc
|
||||
}
|
||||
}
|
||||
}];
|
||||
};
|
||||
const floatButtonGroupStyle = (token) => {
|
||||
const {
|
||||
antCls,
|
||||
componentCls,
|
||||
floatButtonSize,
|
||||
margin,
|
||||
borderRadiusLG,
|
||||
borderRadiusSM,
|
||||
badgeOffset,
|
||||
floatButtonBodyPadding
|
||||
} = token;
|
||||
const groupPrefixCls = `${componentCls}-group`;
|
||||
return {
|
||||
[groupPrefixCls]: _extends(_extends({}, resetComponent(token)), {
|
||||
zIndex: 99,
|
||||
display: "block",
|
||||
border: "none",
|
||||
position: "fixed",
|
||||
width: floatButtonSize,
|
||||
height: "auto",
|
||||
boxShadow: "none",
|
||||
minHeight: floatButtonSize,
|
||||
insetInlineEnd: token.floatButtonInsetInlineEnd,
|
||||
insetBlockEnd: token.floatButtonInsetBlockEnd,
|
||||
borderRadius: borderRadiusLG,
|
||||
[`${groupPrefixCls}-wrap`]: {
|
||||
zIndex: -1,
|
||||
display: "block",
|
||||
position: "relative",
|
||||
marginBottom: margin
|
||||
},
|
||||
[`&${groupPrefixCls}-rtl`]: {
|
||||
direction: "rtl"
|
||||
},
|
||||
[componentCls]: {
|
||||
position: "static"
|
||||
}
|
||||
}),
|
||||
[`${groupPrefixCls}-circle`]: {
|
||||
[`${componentCls}-circle:not(:last-child)`]: {
|
||||
marginBottom: token.margin,
|
||||
[`${componentCls}-body`]: {
|
||||
width: floatButtonSize,
|
||||
height: floatButtonSize,
|
||||
borderRadius: "50%"
|
||||
}
|
||||
}
|
||||
},
|
||||
[`${groupPrefixCls}-square`]: {
|
||||
[`${componentCls}-square`]: {
|
||||
borderRadius: 0,
|
||||
padding: 0,
|
||||
"&:first-child": {
|
||||
borderStartStartRadius: borderRadiusLG,
|
||||
borderStartEndRadius: borderRadiusLG
|
||||
},
|
||||
"&:last-child": {
|
||||
borderEndStartRadius: borderRadiusLG,
|
||||
borderEndEndRadius: borderRadiusLG
|
||||
},
|
||||
"&:not(:last-child)": {
|
||||
borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`
|
||||
},
|
||||
[`${antCls}-badge`]: {
|
||||
[`${antCls}-badge-count`]: {
|
||||
top: -(floatButtonBodyPadding + badgeOffset),
|
||||
insetInlineEnd: -(floatButtonBodyPadding + badgeOffset)
|
||||
}
|
||||
}
|
||||
},
|
||||
[`${groupPrefixCls}-wrap`]: {
|
||||
display: "block",
|
||||
borderRadius: borderRadiusLG,
|
||||
boxShadow: token.boxShadowSecondary,
|
||||
[`${componentCls}-square`]: {
|
||||
boxShadow: "none",
|
||||
marginTop: 0,
|
||||
borderRadius: 0,
|
||||
padding: floatButtonBodyPadding,
|
||||
"&:first-child": {
|
||||
borderStartStartRadius: borderRadiusLG,
|
||||
borderStartEndRadius: borderRadiusLG
|
||||
},
|
||||
"&:last-child": {
|
||||
borderEndStartRadius: borderRadiusLG,
|
||||
borderEndEndRadius: borderRadiusLG
|
||||
},
|
||||
"&:not(:last-child)": {
|
||||
borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorSplit}`
|
||||
},
|
||||
[`${componentCls}-body`]: {
|
||||
width: token.floatButtonBodySize,
|
||||
height: token.floatButtonBodySize
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
[`${groupPrefixCls}-circle-shadow`]: {
|
||||
boxShadow: "none"
|
||||
},
|
||||
[`${groupPrefixCls}-square-shadow`]: {
|
||||
boxShadow: token.boxShadowSecondary,
|
||||
[`${componentCls}-square`]: {
|
||||
boxShadow: "none",
|
||||
padding: floatButtonBodyPadding,
|
||||
[`${componentCls}-body`]: {
|
||||
width: token.floatButtonBodySize,
|
||||
height: token.floatButtonBodySize,
|
||||
borderRadius: borderRadiusSM
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const sharedFloatButtonStyle = (token) => {
|
||||
const {
|
||||
antCls,
|
||||
componentCls,
|
||||
floatButtonBodyPadding,
|
||||
floatButtonIconSize,
|
||||
floatButtonSize,
|
||||
borderRadiusLG,
|
||||
badgeOffset,
|
||||
dotOffsetInSquare,
|
||||
dotOffsetInCircle
|
||||
} = token;
|
||||
return {
|
||||
[componentCls]: _extends(_extends({}, resetComponent(token)), {
|
||||
border: "none",
|
||||
position: "fixed",
|
||||
cursor: "pointer",
|
||||
zIndex: 99,
|
||||
display: "block",
|
||||
justifyContent: "center",
|
||||
alignItems: "center",
|
||||
width: floatButtonSize,
|
||||
height: floatButtonSize,
|
||||
insetInlineEnd: token.floatButtonInsetInlineEnd,
|
||||
insetBlockEnd: token.floatButtonInsetBlockEnd,
|
||||
boxShadow: token.boxShadowSecondary,
|
||||
// Pure Panel
|
||||
"&-pure": {
|
||||
position: "relative",
|
||||
inset: "auto"
|
||||
},
|
||||
"&:empty": {
|
||||
display: "none"
|
||||
},
|
||||
[`${antCls}-badge`]: {
|
||||
width: "100%",
|
||||
height: "100%",
|
||||
[`${antCls}-badge-count`]: {
|
||||
transform: "translate(0, 0)",
|
||||
transformOrigin: "center",
|
||||
top: -badgeOffset,
|
||||
insetInlineEnd: -badgeOffset
|
||||
}
|
||||
},
|
||||
[`${componentCls}-body`]: {
|
||||
width: "100%",
|
||||
height: "100%",
|
||||
display: "flex",
|
||||
justifyContent: "center",
|
||||
alignItems: "center",
|
||||
transition: `all ${token.motionDurationMid}`,
|
||||
[`${componentCls}-content`]: {
|
||||
overflow: "hidden",
|
||||
textAlign: "center",
|
||||
minHeight: floatButtonSize,
|
||||
display: "flex",
|
||||
flexDirection: "column",
|
||||
justifyContent: "center",
|
||||
alignItems: "center",
|
||||
padding: `${floatButtonBodyPadding / 2}px ${floatButtonBodyPadding}px`,
|
||||
[`${componentCls}-icon`]: {
|
||||
textAlign: "center",
|
||||
margin: "auto",
|
||||
width: floatButtonIconSize,
|
||||
fontSize: floatButtonIconSize,
|
||||
lineHeight: 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}),
|
||||
[`${componentCls}-rtl`]: {
|
||||
direction: "rtl"
|
||||
},
|
||||
[`${componentCls}-circle`]: {
|
||||
height: floatButtonSize,
|
||||
borderRadius: "50%",
|
||||
[`${antCls}-badge`]: {
|
||||
[`${antCls}-badge-dot`]: {
|
||||
top: dotOffsetInCircle,
|
||||
insetInlineEnd: dotOffsetInCircle
|
||||
}
|
||||
},
|
||||
[`${componentCls}-body`]: {
|
||||
borderRadius: "50%"
|
||||
}
|
||||
},
|
||||
[`${componentCls}-square`]: {
|
||||
height: "auto",
|
||||
minHeight: floatButtonSize,
|
||||
borderRadius: borderRadiusLG,
|
||||
[`${antCls}-badge`]: {
|
||||
[`${antCls}-badge-dot`]: {
|
||||
top: dotOffsetInSquare,
|
||||
insetInlineEnd: dotOffsetInSquare
|
||||
}
|
||||
},
|
||||
[`${componentCls}-body`]: {
|
||||
height: "auto",
|
||||
borderRadius: borderRadiusLG
|
||||
}
|
||||
},
|
||||
[`${componentCls}-default`]: {
|
||||
backgroundColor: token.floatButtonBackgroundColor,
|
||||
transition: `background-color ${token.motionDurationMid}`,
|
||||
[`${componentCls}-body`]: {
|
||||
backgroundColor: token.floatButtonBackgroundColor,
|
||||
transition: `background-color ${token.motionDurationMid}`,
|
||||
"&:hover": {
|
||||
backgroundColor: token.colorFillContent
|
||||
},
|
||||
[`${componentCls}-content`]: {
|
||||
[`${componentCls}-icon`]: {
|
||||
color: token.colorText
|
||||
},
|
||||
[`${componentCls}-description`]: {
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
lineHeight: `${token.fontSizeLG}px`,
|
||||
color: token.colorText,
|
||||
fontSize: token.fontSizeSM
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
[`${componentCls}-primary`]: {
|
||||
backgroundColor: token.colorPrimary,
|
||||
[`${componentCls}-body`]: {
|
||||
backgroundColor: token.colorPrimary,
|
||||
transition: `background-color ${token.motionDurationMid}`,
|
||||
"&:hover": {
|
||||
backgroundColor: token.colorPrimaryHover
|
||||
},
|
||||
[`${componentCls}-content`]: {
|
||||
[`${componentCls}-icon`]: {
|
||||
color: token.colorTextLightSolid
|
||||
},
|
||||
[`${componentCls}-description`]: {
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
lineHeight: `${token.fontSizeLG}px`,
|
||||
color: token.colorTextLightSolid,
|
||||
fontSize: token.fontSizeSM
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const useStyle = genComponentStyleHook("FloatButton", (token) => {
|
||||
const {
|
||||
colorTextLightSolid,
|
||||
colorBgElevated,
|
||||
controlHeightLG,
|
||||
marginXXL,
|
||||
marginLG,
|
||||
fontSize,
|
||||
fontSizeIcon,
|
||||
controlItemBgHover,
|
||||
paddingXXS,
|
||||
borderRadiusLG
|
||||
} = token;
|
||||
const floatButtonToken = merge(token, {
|
||||
floatButtonBackgroundColor: colorBgElevated,
|
||||
floatButtonColor: colorTextLightSolid,
|
||||
floatButtonHoverBackgroundColor: controlItemBgHover,
|
||||
floatButtonFontSize: fontSize,
|
||||
floatButtonIconSize: fontSizeIcon * 1.5,
|
||||
floatButtonSize: controlHeightLG,
|
||||
floatButtonInsetBlockEnd: marginXXL,
|
||||
floatButtonInsetInlineEnd: marginLG,
|
||||
floatButtonBodySize: controlHeightLG - paddingXXS * 2,
|
||||
// 这里的 paddingXXS 是简写,完整逻辑是 (controlHeightLG - (controlHeightLG - paddingXXS * 2)) / 2,
|
||||
floatButtonBodyPadding: paddingXXS,
|
||||
badgeOffset: paddingXXS * 1.5,
|
||||
dotOffsetInCircle: getOffset(controlHeightLG / 2),
|
||||
dotOffsetInSquare: getOffset(borderRadiusLG)
|
||||
});
|
||||
return [floatButtonGroupStyle(floatButtonToken), sharedFloatButtonStyle(floatButtonToken), initFadeMotion(token), initFloatButtonGroupMotion(floatButtonToken)];
|
||||
});
|
||||
var __rest = function(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
const floatButtonPrefixCls = "float-btn";
|
||||
const FloatButton = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "AFloatButton",
|
||||
inheritAttrs: false,
|
||||
props: initDefaultProps(floatButtonProps(), {
|
||||
type: "default",
|
||||
shape: "circle"
|
||||
}),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls,
|
||||
direction
|
||||
} = useConfigInject(floatButtonPrefixCls, props);
|
||||
const [wrapSSR, hashId] = useStyle(prefixCls);
|
||||
const {
|
||||
shape: groupShape
|
||||
} = useInjectFloatButtonGroupContext();
|
||||
const floatButtonRef = ref(null);
|
||||
const mergeShape = computed(() => {
|
||||
return (groupShape === null || groupShape === void 0 ? void 0 : groupShape.value) || props.shape;
|
||||
});
|
||||
return () => {
|
||||
var _a;
|
||||
const {
|
||||
prefixCls: customPrefixCls,
|
||||
type = "default",
|
||||
shape = "circle",
|
||||
description = (_a = slots.description) === null || _a === void 0 ? void 0 : _a.call(slots),
|
||||
tooltip,
|
||||
badge = {}
|
||||
} = props, restProps = __rest(props, ["prefixCls", "type", "shape", "description", "tooltip", "badge"]);
|
||||
const classString = classNames(prefixCls.value, `${prefixCls.value}-${type}`, `${prefixCls.value}-${mergeShape.value}`, {
|
||||
[`${prefixCls.value}-rtl`]: direction.value === "rtl"
|
||||
}, attrs.class, hashId.value);
|
||||
const buttonNode = createVNode(__nuxt_component_2, {
|
||||
"placement": "left"
|
||||
}, {
|
||||
title: slots.tooltip || tooltip ? () => slots.tooltip && slots.tooltip() || tooltip : void 0,
|
||||
default: () => createVNode(Badge, badge, {
|
||||
default: () => [createVNode("div", {
|
||||
"class": `${prefixCls.value}-body`
|
||||
}, [createVNode(FloatButtonContent, {
|
||||
"prefixCls": prefixCls.value
|
||||
}, {
|
||||
icon: slots.icon,
|
||||
description: () => description
|
||||
})])]
|
||||
})
|
||||
});
|
||||
return wrapSSR(props.href ? createVNode("a", _objectSpread$2(_objectSpread$2(_objectSpread$2({
|
||||
"ref": floatButtonRef
|
||||
}, attrs), restProps), {}, {
|
||||
"class": classString
|
||||
}), [buttonNode]) : createVNode("button", _objectSpread$2(_objectSpread$2(_objectSpread$2({
|
||||
"ref": floatButtonRef
|
||||
}, attrs), restProps), {}, {
|
||||
"class": classString,
|
||||
"type": "button"
|
||||
}), [buttonNode]));
|
||||
};
|
||||
}
|
||||
});
|
||||
const FloatButtonGroup = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "AFloatButtonGroup",
|
||||
inheritAttrs: false,
|
||||
props: initDefaultProps(floatButtonGroupProps(), {
|
||||
type: "default",
|
||||
shape: "circle"
|
||||
}),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots,
|
||||
emit
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls,
|
||||
direction
|
||||
} = useConfigInject(floatButtonPrefixCls, props);
|
||||
const [wrapSSR, hashId] = useStyle(prefixCls);
|
||||
const [open, setOpen] = useMergedState(false, {
|
||||
value: computed(() => props.open)
|
||||
});
|
||||
const floatButtonGroupRef = ref(null);
|
||||
const floatButtonRef = ref(null);
|
||||
useProvideFloatButtonGroupContext({
|
||||
shape: computed(() => props.shape)
|
||||
});
|
||||
const hoverTypeAction = {
|
||||
onMouseenter() {
|
||||
var _a;
|
||||
setOpen(true);
|
||||
emit("update:open", true);
|
||||
(_a = props.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(props, true);
|
||||
},
|
||||
onMouseleave() {
|
||||
var _a;
|
||||
setOpen(false);
|
||||
emit("update:open", false);
|
||||
(_a = props.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(props, false);
|
||||
}
|
||||
};
|
||||
const hoverAction = computed(() => {
|
||||
return props.trigger === "hover" ? hoverTypeAction : {};
|
||||
});
|
||||
watch(computed(() => props.trigger), (value) => {
|
||||
{
|
||||
return;
|
||||
}
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
return () => {
|
||||
var _a;
|
||||
const {
|
||||
shape = "circle",
|
||||
type = "default",
|
||||
tooltip,
|
||||
description,
|
||||
trigger
|
||||
} = props;
|
||||
const groupPrefixCls = `${prefixCls.value}-group`;
|
||||
const groupCls = classNames(groupPrefixCls, hashId.value, attrs.class, {
|
||||
[`${groupPrefixCls}-rtl`]: direction.value === "rtl",
|
||||
[`${groupPrefixCls}-${shape}`]: shape,
|
||||
[`${groupPrefixCls}-${shape}-shadow`]: !trigger
|
||||
});
|
||||
const wrapperCls = classNames(hashId.value, `${groupPrefixCls}-wrap`);
|
||||
const transitionProps = getTransitionProps(`${groupPrefixCls}-wrap`);
|
||||
return wrapSSR(createVNode("div", _objectSpread$2(_objectSpread$2({
|
||||
"ref": floatButtonGroupRef
|
||||
}, attrs), {}, {
|
||||
"class": groupCls
|
||||
}, hoverAction.value), [trigger && ["click", "hover"].includes(trigger) ? createVNode(Fragment, null, [createVNode(Transition, transitionProps, {
|
||||
default: () => [withDirectives(createVNode("div", {
|
||||
"class": wrapperCls
|
||||
}, [slots.default && slots.default()]), [[vShow, open.value]])]
|
||||
}), createVNode(FloatButton, {
|
||||
"ref": floatButtonRef,
|
||||
"type": type,
|
||||
"shape": shape,
|
||||
"tooltip": tooltip,
|
||||
"description": description
|
||||
}, {
|
||||
icon: () => {
|
||||
var _a2, _b;
|
||||
return open.value ? ((_a2 = slots.closeIcon) === null || _a2 === void 0 ? void 0 : _a2.call(slots)) || createVNode(CloseOutlined, null, null) : ((_b = slots.icon) === null || _b === void 0 ? void 0 : _b.call(slots)) || createVNode(FileTextOutlined, null, null);
|
||||
},
|
||||
tooltip: slots.tooltip,
|
||||
description: slots.description
|
||||
})]) : (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]));
|
||||
};
|
||||
}
|
||||
});
|
||||
const BackTop = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ABackTop",
|
||||
inheritAttrs: false,
|
||||
props: initDefaultProps(backTopProps(), {
|
||||
visibilityHeight: 400,
|
||||
target: () => void 0,
|
||||
duration: 450,
|
||||
type: "default",
|
||||
shape: "circle"
|
||||
}),
|
||||
// emits: ['click'],
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
attrs,
|
||||
emit
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls,
|
||||
direction
|
||||
} = useConfigInject(floatButtonPrefixCls, props);
|
||||
const [wrapSSR] = useStyle(prefixCls);
|
||||
const domRef = ref();
|
||||
const state = reactive({
|
||||
visible: props.visibilityHeight === 0,
|
||||
scrollEvent: null
|
||||
});
|
||||
const getDefaultTarget = () => domRef.value && domRef.value.ownerDocument ? domRef.value.ownerDocument : void 0;
|
||||
const scrollToTop = (e) => {
|
||||
const {
|
||||
target = getDefaultTarget,
|
||||
duration
|
||||
} = props;
|
||||
scrollTo(0, {
|
||||
getContainer: target,
|
||||
duration
|
||||
});
|
||||
emit("click", e);
|
||||
};
|
||||
const handleScroll = throttleByAnimationFrame((e) => {
|
||||
const {
|
||||
visibilityHeight
|
||||
} = props;
|
||||
const scrollTop = getScroll(e.target);
|
||||
state.visible = scrollTop >= visibilityHeight;
|
||||
});
|
||||
const bindScrollEvent = () => {
|
||||
const {
|
||||
target
|
||||
} = props;
|
||||
const getTarget = target || getDefaultTarget;
|
||||
const container = getTarget();
|
||||
handleScroll({
|
||||
target: container
|
||||
});
|
||||
container === null || container === void 0 ? void 0 : container.addEventListener("scroll", handleScroll);
|
||||
};
|
||||
const scrollRemove = () => {
|
||||
const {
|
||||
target
|
||||
} = props;
|
||||
const getTarget = target || getDefaultTarget;
|
||||
const container = getTarget();
|
||||
handleScroll.cancel();
|
||||
container === null || container === void 0 ? void 0 : container.removeEventListener("scroll", handleScroll);
|
||||
};
|
||||
watch(() => props.target, () => {
|
||||
scrollRemove();
|
||||
nextTick(() => {
|
||||
bindScrollEvent();
|
||||
});
|
||||
});
|
||||
const floatButtonGroupContext = useInjectFloatButtonGroupContext();
|
||||
return () => {
|
||||
const {
|
||||
description,
|
||||
type,
|
||||
shape,
|
||||
tooltip,
|
||||
badge
|
||||
} = props;
|
||||
const floatButtonProps2 = _extends(_extends({}, attrs), {
|
||||
shape: (floatButtonGroupContext === null || floatButtonGroupContext === void 0 ? void 0 : floatButtonGroupContext.shape.value) || shape,
|
||||
onClick: scrollToTop,
|
||||
class: {
|
||||
[`${prefixCls.value}`]: true,
|
||||
[`${attrs.class}`]: attrs.class,
|
||||
[`${prefixCls.value}-rtl`]: direction.value === "rtl"
|
||||
},
|
||||
description,
|
||||
type,
|
||||
tooltip,
|
||||
badge
|
||||
});
|
||||
const transitionProps = getTransitionProps("fade");
|
||||
return wrapSSR(createVNode(Transition, transitionProps, {
|
||||
default: () => [withDirectives(createVNode(FloatButton, _objectSpread$2(_objectSpread$2({}, floatButtonProps2), {}, {
|
||||
"ref": domRef
|
||||
}), {
|
||||
icon: () => {
|
||||
var _a;
|
||||
return ((_a = slots.icon) === null || _a === void 0 ? void 0 : _a.call(slots)) || createVNode(VerticalAlignTopOutlined, null, null);
|
||||
}
|
||||
}), [[vShow, state.visible]])]
|
||||
}));
|
||||
};
|
||||
}
|
||||
});
|
||||
FloatButton.Group = FloatButtonGroup;
|
||||
FloatButton.BackTop = BackTop;
|
||||
FloatButton.install = function(app) {
|
||||
app.component(FloatButton.name, FloatButton);
|
||||
app.component(FloatButtonGroup.name, FloatButtonGroup);
|
||||
app.component(BackTop.name, BackTop);
|
||||
return app;
|
||||
};
|
||||
const _imports_0 = "" + __buildAssetsURL("not_found.CbOIXISv.svg");
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "CustomersList",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useUserStore();
|
||||
const config = useConfigStore();
|
||||
const router = useRouter$1();
|
||||
const loading = ref(false);
|
||||
ref(false);
|
||||
ref(0);
|
||||
ref(10);
|
||||
const users = ref([]);
|
||||
function deleteUser(id) {
|
||||
users.value.splice(users.value.findIndex((x) => x.id === id), 1);
|
||||
}
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_a_float_button = FloatButton;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: ["flex flex-col gap-2 min-h-50vh pt5", users.value?.length > 0 ? "" : "justify-center"]
|
||||
}, _attrs))}>`);
|
||||
if (!loading.value) {
|
||||
_push(`<!--[-->`);
|
||||
if (users.value.length !== 0) {
|
||||
_push(`<!--[-->`);
|
||||
ssrRenderList(users.value, (user) => {
|
||||
_push(ssrRenderComponent(CustomerCard, {
|
||||
user,
|
||||
onRefresh: ($event) => deleteUser(user.id)
|
||||
}, null, _parent));
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<!--[--><img${ssrRenderAttr("src", _imports_0)} alt="orders" class="w-30 self-center"><p class="self-center text-gray-6">${ssrInterpolate(unref(config).useString("customerListIsEmpty"))}</p><!--]-->`);
|
||||
}
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<!--[-->`);
|
||||
ssrRenderList(8, (i) => {
|
||||
_push(ssrRenderComponent(CustomerCardSkeleton, null, null, _parent));
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
}
|
||||
if (unref(config).isSeller) {
|
||||
_push(ssrRenderComponent(_component_a_float_button, {
|
||||
shape: "circle",
|
||||
type: "primary",
|
||||
onClick: ($event) => unref(router).push({ name: "user-add" }),
|
||||
class: "bottom-10vh w-3rem h-3rem"
|
||||
}, {
|
||||
icon: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(BasicIconOld, { icon: "vuesax-linear:add" }, null, _parent2, _scopeId));
|
||||
} else {
|
||||
return [
|
||||
createVNode(BasicIconOld, { icon: "vuesax-linear:add" })
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("views/base/pages/statisticsList/components/CustomersList.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "customers",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/user/statistics_list/customers.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,187 @@
|
||||
import { _ as __nuxt_component_0$2 } from './Logo1-niQqxVlt.mjs';
|
||||
import { defineComponent, ref, watch, unref, computed, mergeProps, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderSlot, ssrRenderClass, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { u as useRouter$1, a_ as useWindowSize, at as useNuxtApp, a as useConfigStore, b as useUserStore, a$ as useHead, b0 as useBreakpoints, b1 as breakpointsTailwind, _ as __nuxt_component_0$1, b2 as useScrollLock } from './server.mjs';
|
||||
import { u as useChatStore } from './chatStore-BbUUbB13.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { get } from 'lodash-es';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
||||
__name: "splash",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
version: {}
|
||||
},
|
||||
setup(__props) {
|
||||
const logoSrc = computed(
|
||||
() => config.isNightStore ? config.useLogo("logo_mini.png") : config.useLogo("logo_mini.png")
|
||||
);
|
||||
const config = useConfigStore();
|
||||
const showFallback = ref(false);
|
||||
watch(logoSrc, () => {
|
||||
showFallback.value = false;
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_Logo1 = __nuxt_component_0$2;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: ["fixed right-0 left-0 z-100000 top-0 flex justify-center", unref(config).isNightStore ? "bg-black" : "bg-white"]
|
||||
}, _attrs))}><div class="${ssrRenderClass([unref(config).isNightStore ? "bg-black" : "bg-white", "flex flex-col h-screen items-center justify-center w-full md:w-425px top-0"])}"><div class="w-full h-full flex justify-center items-center">`);
|
||||
_push(ssrRenderComponent(_component_Logo1, { class: "inline m-auto w-5rem" }, null, _parent));
|
||||
_push(`</div><div class="text-center absolute bottom-2 w-full"><div class="${ssrRenderClass(unref(config).isNightStore ? "text-white" : "text_black")}">${ssrInterpolate(unref(config).useString("version"))}</div><div class="${ssrRenderClass([unref(config).isNightStore ? "text-white" : "text_black", "text-xs"])}">${ssrInterpolate(_ctx.version)}</div></div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$3 = _sfc_main$3.setup;
|
||||
_sfc_main$3.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/splash.vue");
|
||||
return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_0 = Object.assign(_sfc_main$3, { __name: "Splash" });
|
||||
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0$1;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
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("views/base/index.vue");
|
||||
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
iconSrc: {},
|
||||
appName: { default: "" },
|
||||
forceShow: { type: Boolean, default: false },
|
||||
nonSafariMode: { default: "block" },
|
||||
zIndex: { default: 4e3 }
|
||||
},
|
||||
setup(__props) {
|
||||
const props = __props;
|
||||
const configStore = useConfigStore();
|
||||
const open = ref(false);
|
||||
ref(false);
|
||||
ref(false);
|
||||
ref(false);
|
||||
ref(true);
|
||||
computed(() => {
|
||||
if (props.appName) return props.appName;
|
||||
try {
|
||||
return configStore.appName.value.fa || configStore.appName.value.en;
|
||||
} catch {
|
||||
return "App";
|
||||
}
|
||||
});
|
||||
const lock = useScrollLock(null);
|
||||
watch(open, (v) => {
|
||||
if (lock) lock.value = v;
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0$1;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _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("components/IosInstallPrompt/index.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const Index = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$1, [["__scopeId", "data-v-e8df050d"]]), { __name: "IosInstallPrompt" });
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "default",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const router = useRouter$1();
|
||||
const { width } = useWindowSize();
|
||||
const breakpoints = useBreakpoints(breakpointsTailwind);
|
||||
const isSM = breakpoints.smaller("sm");
|
||||
const showMobileNavigationMenu = ref(false);
|
||||
const showSplash = ref(true);
|
||||
const nuxtApp = useNuxtApp();
|
||||
const config = useConfigStore();
|
||||
useUserStore();
|
||||
useChatStore();
|
||||
watch([width, isSM], () => {
|
||||
checkFooterHeader();
|
||||
});
|
||||
function checkFooterHeader() {
|
||||
showMobileNavigationMenu.value = !!get(router.currentRoute.value, "meta.showMobileNavigationMenu", true);
|
||||
}
|
||||
nuxtApp.hook("page:finish", () => {
|
||||
checkFooterHeader();
|
||||
});
|
||||
useHead({
|
||||
title: config.appName.en
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_Splash = __nuxt_component_0;
|
||||
_push(`<div${ssrRenderAttrs(_attrs)}>`);
|
||||
if (showSplash.value) {
|
||||
_push(ssrRenderComponent(_component_Splash, {
|
||||
version: unref(config).VERSION
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
||||
_push(`<div>`);
|
||||
_push(ssrRenderComponent(Index, {
|
||||
iconSrc: unref(config).useLogo("pwa-icon-192.png"),
|
||||
storageKey: "ios-install-guide-v1",
|
||||
zIndex: 3e3,
|
||||
"non-safari-mode": "hint"
|
||||
}, null, _parent));
|
||||
_push(`</div>`);
|
||||
if (showMobileNavigationMenu.value) {
|
||||
_push(ssrRenderComponent(_sfc_main$2, {
|
||||
class: "!md:w-425px",
|
||||
style: { "width": "-webkit-fill-available" }
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("layouts/default.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,139 @@
|
||||
import { defineComponent, ref, computed, watch, nextTick, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { u as useRouter$1, a as useConfigStore, b as useUserStore, _ as __nuxt_component_0 } from './server.mjs';
|
||||
import WaveSurfer from 'wavesurfer.js';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useRouter$1();
|
||||
const config = useConfigStore();
|
||||
const userStore = useUserStore();
|
||||
ref("");
|
||||
ref(null);
|
||||
ref(null);
|
||||
const selectedFile = ref(null);
|
||||
const filePreviewUrl = ref("");
|
||||
ref(void 0);
|
||||
const waveformContainer = ref(null);
|
||||
const wavesurfer = ref(null);
|
||||
const isWaveformPlaying = ref(false);
|
||||
const waveformCurrentTime = ref(0);
|
||||
ref(false);
|
||||
ref(null);
|
||||
ref([]);
|
||||
ref(0);
|
||||
ref(null);
|
||||
const audioDuration = ref(0);
|
||||
ref(null);
|
||||
computed(() => config.sellerConfig?.store?.main && userStore.user.id !== config.sellerConfig?.store?.id);
|
||||
ref(false);
|
||||
ref(false);
|
||||
ref(void 0);
|
||||
const isAudioFile = (file) => {
|
||||
return file.type.startsWith("audio/");
|
||||
};
|
||||
const initWaveform = async (audioSource) => {
|
||||
if (!waveformContainer.value) return;
|
||||
if (wavesurfer.value) {
|
||||
wavesurfer.value.destroy();
|
||||
wavesurfer.value = null;
|
||||
}
|
||||
const url = URL.createObjectURL(audioSource);
|
||||
const ws = WaveSurfer.create({
|
||||
container: waveformContainer.value,
|
||||
height: 50,
|
||||
normalize: true,
|
||||
waveColor: "#94a3b8",
|
||||
progressColor: "#2563eb",
|
||||
cursorColor: "#ef4444",
|
||||
barWidth: 3,
|
||||
barGap: 2,
|
||||
barRadius: 4,
|
||||
interact: true,
|
||||
dragToSeek: true,
|
||||
fillParent: true,
|
||||
autoCenter: true
|
||||
});
|
||||
ws.load(url);
|
||||
ws.on("ready", () => {
|
||||
audioDuration.value = ws.getDuration();
|
||||
});
|
||||
ws.on("timeupdate", (time) => {
|
||||
waveformCurrentTime.value = time;
|
||||
});
|
||||
ws.on("play", () => {
|
||||
isWaveformPlaying.value = true;
|
||||
});
|
||||
ws.on("pause", () => {
|
||||
isWaveformPlaying.value = false;
|
||||
});
|
||||
ws.on("finish", () => {
|
||||
isWaveformPlaying.value = false;
|
||||
waveformCurrentTime.value = 0;
|
||||
});
|
||||
wavesurfer.value = ws;
|
||||
};
|
||||
watch(selectedFile, async (newFile) => {
|
||||
if (newFile && isAudioFile(newFile) && filePreviewUrl.value) {
|
||||
await nextTick();
|
||||
const audioBlob = await fetch(filePreviewUrl.value).then((r) => r.blob());
|
||||
await initWaveform(audioBlob);
|
||||
}
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_client_only = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_client_only, _attrs, {}, _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("views/base/pages/direct/detail/index.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const Index = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-3fecc9f4"]]);
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "detail_message",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(Index, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/message/detail_message.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "discount",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/user/discount.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,3 @@
|
||||
const empty_user = "" + __buildAssetsURL("empty_user.DjvjY29X.png");
|
||||
|
||||
export { empty_user as e };
|
||||
@@ -0,0 +1,383 @@
|
||||
import { mergeProps, withCtx, createTextVNode, toDisplayString, defineComponent, shallowRef, h, resolveComponent, computed, useSSRContext } from 'vue';
|
||||
import { p as parseQuery, h as hasProtocol, j as joinURL, w as withTrailingSlash, i as withoutTrailingSlash } from '../nitro/nitro.mjs';
|
||||
import { a$ as useHead, u as useRouter$1, b3 as encodeRoutePath, b4 as resolveRouteObject, b5 as navigateTo, at as useNuxtApp, b6 as useRuntimeConfig, b7 as nuxtLinkDefaults } from './server.mjs';
|
||||
import { ssrRenderAttrs, ssrInterpolate, ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const firstNonUndefined = (...args) => args.find((arg) => arg !== void 0);
|
||||
// @__NO_SIDE_EFFECTS__
|
||||
function defineNuxtLink(options) {
|
||||
const componentName = options.componentName || "NuxtLink";
|
||||
function isHashLinkWithoutHashMode(link) {
|
||||
return typeof link === "string" && link.startsWith("#");
|
||||
}
|
||||
function resolveTrailingSlashBehavior(to, resolve, trailingSlash) {
|
||||
const effectiveTrailingSlash = trailingSlash ?? options.trailingSlash;
|
||||
if (!to || effectiveTrailingSlash !== "append" && effectiveTrailingSlash !== "remove") {
|
||||
return to;
|
||||
}
|
||||
if (typeof to === "string") {
|
||||
return applyTrailingSlashBehavior(to, effectiveTrailingSlash);
|
||||
}
|
||||
const path = "path" in to && to.path !== void 0 ? to.path : resolve(to).path;
|
||||
const resolvedPath = {
|
||||
...to,
|
||||
name: void 0,
|
||||
// named routes would otherwise always override trailing slash behavior
|
||||
path: applyTrailingSlashBehavior(path, effectiveTrailingSlash)
|
||||
};
|
||||
return resolvedPath;
|
||||
}
|
||||
function useNuxtLink(props) {
|
||||
const router = useRouter$1();
|
||||
const config = useRuntimeConfig();
|
||||
const hasTarget = computed(() => !!props.target && props.target !== "_self");
|
||||
const isAbsoluteUrl = computed(() => {
|
||||
const path = props.to || props.href || "";
|
||||
return typeof path === "string" && hasProtocol(path, { acceptRelative: true });
|
||||
});
|
||||
const builtinRouterLink = resolveComponent("RouterLink");
|
||||
const useBuiltinLink = builtinRouterLink && typeof builtinRouterLink !== "string" ? builtinRouterLink.useLink : void 0;
|
||||
const isExternal = computed(() => {
|
||||
if (props.external) {
|
||||
return true;
|
||||
}
|
||||
const path = props.to || props.href || "";
|
||||
if (typeof path === "object") {
|
||||
return false;
|
||||
}
|
||||
return path === "" || isAbsoluteUrl.value;
|
||||
});
|
||||
const to = computed(() => {
|
||||
const path = props.to || props.href || "";
|
||||
if (isExternal.value) {
|
||||
return path;
|
||||
}
|
||||
return resolveTrailingSlashBehavior(path, router.resolve, props.trailingSlash);
|
||||
});
|
||||
const link = isExternal.value ? void 0 : useBuiltinLink?.({ ...props, to });
|
||||
const href = computed(() => {
|
||||
const effectiveTrailingSlash = props.trailingSlash ?? options.trailingSlash;
|
||||
if (!to.value || isAbsoluteUrl.value || isHashLinkWithoutHashMode(to.value)) {
|
||||
return to.value;
|
||||
}
|
||||
if (isExternal.value) {
|
||||
const path = typeof to.value === "object" && "path" in to.value ? resolveRouteObject(to.value) : to.value;
|
||||
const href2 = typeof path === "object" ? router.resolve(path).href : path;
|
||||
return applyTrailingSlashBehavior(href2, effectiveTrailingSlash);
|
||||
}
|
||||
if (typeof to.value === "object") {
|
||||
return router.resolve(to.value)?.href ?? null;
|
||||
}
|
||||
return applyTrailingSlashBehavior(joinURL(config.app.baseURL, to.value), effectiveTrailingSlash);
|
||||
});
|
||||
return {
|
||||
to,
|
||||
hasTarget,
|
||||
isAbsoluteUrl,
|
||||
isExternal,
|
||||
//
|
||||
href,
|
||||
isActive: link?.isActive ?? computed(() => to.value === router.currentRoute.value.path),
|
||||
isExactActive: link?.isExactActive ?? computed(() => to.value === router.currentRoute.value.path),
|
||||
route: link?.route ?? computed(() => router.resolve(to.value)),
|
||||
async navigate(_e) {
|
||||
await navigateTo(href.value, { replace: props.replace, external: isExternal.value || hasTarget.value });
|
||||
}
|
||||
};
|
||||
}
|
||||
return defineComponent({
|
||||
name: componentName,
|
||||
props: {
|
||||
// Routing
|
||||
to: {
|
||||
type: [String, Object],
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
href: {
|
||||
type: [String, Object],
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
// Attributes
|
||||
target: {
|
||||
type: String,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
rel: {
|
||||
type: String,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
noRel: {
|
||||
type: Boolean,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
// Prefetching
|
||||
prefetch: {
|
||||
type: Boolean,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
prefetchOn: {
|
||||
type: [String, Object],
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
noPrefetch: {
|
||||
type: Boolean,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
// Styling
|
||||
activeClass: {
|
||||
type: String,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
exactActiveClass: {
|
||||
type: String,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
prefetchedClass: {
|
||||
type: String,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
// Vue Router's `<RouterLink>` additional props
|
||||
replace: {
|
||||
type: Boolean,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
ariaCurrentValue: {
|
||||
type: String,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
// Edge cases handling
|
||||
external: {
|
||||
type: Boolean,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
// Slot API
|
||||
custom: {
|
||||
type: Boolean,
|
||||
default: void 0,
|
||||
required: false
|
||||
},
|
||||
// Behavior
|
||||
trailingSlash: {
|
||||
type: String,
|
||||
default: void 0,
|
||||
required: false
|
||||
}
|
||||
},
|
||||
useLink: useNuxtLink,
|
||||
setup(props, { slots }) {
|
||||
const router = useRouter$1();
|
||||
const { to, href, navigate, isExternal, hasTarget, isAbsoluteUrl } = useNuxtLink(props);
|
||||
shallowRef(false);
|
||||
const el = void 0;
|
||||
const elRef = void 0;
|
||||
async function prefetch(nuxtApp = useNuxtApp()) {
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
return () => {
|
||||
if (!isExternal.value && !hasTarget.value && !isHashLinkWithoutHashMode(to.value)) {
|
||||
const routerLinkProps = {
|
||||
ref: elRef,
|
||||
to: to.value,
|
||||
activeClass: props.activeClass || options.activeClass,
|
||||
exactActiveClass: props.exactActiveClass || options.exactActiveClass,
|
||||
replace: props.replace,
|
||||
ariaCurrentValue: props.ariaCurrentValue,
|
||||
custom: props.custom
|
||||
};
|
||||
if (!props.custom) {
|
||||
routerLinkProps.rel = props.rel || void 0;
|
||||
}
|
||||
return h(
|
||||
resolveComponent("RouterLink"),
|
||||
routerLinkProps,
|
||||
slots.default
|
||||
);
|
||||
}
|
||||
const target = props.target || null;
|
||||
const rel = firstNonUndefined(
|
||||
// converts `""` to `null` to prevent the attribute from being added as empty (`rel=""`)
|
||||
props.noRel ? "" : props.rel,
|
||||
options.externalRelAttribute,
|
||||
/*
|
||||
* A fallback rel of `noopener noreferrer` is applied for external links or links that open in a new tab.
|
||||
* This solves a reverse tabnapping security flaw in browsers pre-2021 as well as improving privacy.
|
||||
*/
|
||||
isAbsoluteUrl.value || hasTarget.value ? "noopener noreferrer" : ""
|
||||
) || null;
|
||||
if (props.custom) {
|
||||
if (!slots.default) {
|
||||
return null;
|
||||
}
|
||||
return slots.default({
|
||||
href: href.value,
|
||||
navigate,
|
||||
prefetch,
|
||||
get route() {
|
||||
if (!href.value) {
|
||||
return void 0;
|
||||
}
|
||||
const url = new URL(href.value, "http://localhost");
|
||||
return {
|
||||
path: url.pathname,
|
||||
fullPath: url.pathname,
|
||||
get query() {
|
||||
return parseQuery(url.search);
|
||||
},
|
||||
hash: url.hash,
|
||||
params: {},
|
||||
name: void 0,
|
||||
matched: [],
|
||||
redirectedFrom: void 0,
|
||||
meta: {},
|
||||
href: href.value
|
||||
};
|
||||
},
|
||||
rel,
|
||||
target,
|
||||
isExternal: isExternal.value || hasTarget.value,
|
||||
isActive: false,
|
||||
isExactActive: false
|
||||
});
|
||||
}
|
||||
return h("a", {
|
||||
ref: el,
|
||||
href: href.value || null,
|
||||
// converts `""` to `null` to prevent the attribute from being added as empty (`href=""`)
|
||||
rel,
|
||||
target,
|
||||
onClick: async (event) => {
|
||||
if (isExternal.value || hasTarget.value) {
|
||||
return;
|
||||
}
|
||||
event.preventDefault();
|
||||
try {
|
||||
const encodedHref = encodeRoutePath(href.value);
|
||||
return await (props.replace ? router.replace(encodedHref) : router.push(encodedHref));
|
||||
} finally {
|
||||
}
|
||||
}
|
||||
}, slots.default?.());
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
const __nuxt_component_0 = /* @__PURE__ */ defineNuxtLink(nuxtLinkDefaults);
|
||||
function applyTrailingSlashBehavior(to, trailingSlash) {
|
||||
const normalizeFn = trailingSlash === "append" ? withTrailingSlash : withoutTrailingSlash;
|
||||
const hasProtocolDifferentFromHttp = hasProtocol(to) && !to.startsWith("http");
|
||||
if (hasProtocolDifferentFromHttp) {
|
||||
return to;
|
||||
}
|
||||
return normalizeFn(to, true);
|
||||
}
|
||||
const _sfc_main = {
|
||||
__name: "error-404",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
appName: {
|
||||
type: String,
|
||||
default: "Nuxt"
|
||||
},
|
||||
status: {
|
||||
type: Number,
|
||||
default: 404
|
||||
},
|
||||
statusText: {
|
||||
type: String,
|
||||
default: "Page not found"
|
||||
},
|
||||
description: {
|
||||
type: String,
|
||||
default: "Sorry, the page you are looking for could not be found."
|
||||
},
|
||||
backHome: {
|
||||
type: String,
|
||||
default: "Go back home"
|
||||
}
|
||||
},
|
||||
setup(__props) {
|
||||
const props = __props;
|
||||
useHead({
|
||||
title: `${props.status} - ${props.statusText} | ${props.appName}`,
|
||||
script: [
|
||||
{
|
||||
innerHTML: `!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`
|
||||
}
|
||||
],
|
||||
style: [
|
||||
{
|
||||
innerHTML: `*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }`
|
||||
}
|
||||
]
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_NuxtLink = __nuxt_component_0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide" }, _attrs))} data-v-8b7948c5><div class="max-w-520px text-center" data-v-8b7948c5><h1 class="font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]" data-v-8b7948c5>${ssrInterpolate(__props.status)}</h1><h2 class="font-semibold mb-2 sm:text-3xl text-2xl" data-v-8b7948c5>${ssrInterpolate(__props.statusText)}</h2><p class="mb-4 px-2 text-[#64748B] text-md" data-v-8b7948c5>${ssrInterpolate(__props.description)}</p><div class="flex items-center justify-center w-full" data-v-8b7948c5>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, {
|
||||
to: "/",
|
||||
class: "font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(__props.backHome)}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(__props.backHome), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div></div></div>`);
|
||||
};
|
||||
}
|
||||
};
|
||||
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/error-404.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const error404 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8b7948c5"]]);
|
||||
|
||||
export { error404 as default };
|
||||
@@ -0,0 +1,83 @@
|
||||
import { mergeProps, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { a$ as useHead } from './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = {
|
||||
__name: "error-500",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
appName: {
|
||||
type: String,
|
||||
default: "Nuxt"
|
||||
},
|
||||
status: {
|
||||
type: Number,
|
||||
default: 500
|
||||
},
|
||||
statusText: {
|
||||
type: String,
|
||||
default: "Internal server error"
|
||||
},
|
||||
description: {
|
||||
type: String,
|
||||
default: "This page is temporarily unavailable."
|
||||
},
|
||||
refresh: {
|
||||
type: String,
|
||||
default: "Refresh this page"
|
||||
}
|
||||
},
|
||||
setup(__props) {
|
||||
const props = __props;
|
||||
useHead({
|
||||
title: `${props.status} - ${props.statusText} | ${props.appName}`,
|
||||
script: [
|
||||
{
|
||||
innerHTML: `!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`
|
||||
}
|
||||
],
|
||||
style: [
|
||||
{
|
||||
innerHTML: `*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }`
|
||||
}
|
||||
]
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide" }, _attrs))} data-v-d7edb62b><div class="max-w-520px text-center" data-v-d7edb62b><h1 class="font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]" data-v-d7edb62b>${ssrInterpolate(__props.status)}</h1><h2 class="font-semibold mb-2 sm:text-3xl text-2xl" data-v-d7edb62b>${ssrInterpolate(__props.statusText)}</h2><p class="mb-4 px-2 text-[#64748B] text-md" data-v-d7edb62b>${ssrInterpolate(__props.description)}</p></div></div>`);
|
||||
};
|
||||
}
|
||||
};
|
||||
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/error-500.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const error500 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d7edb62b"]]);
|
||||
|
||||
export { error500 as default };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,149 @@
|
||||
import { defineComponent, ref, reactive, computed, mergeProps, unref, withCtx, createVNode, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { ContentLoader } from 'vue-content-loader';
|
||||
import { q as useElementSize } from './server.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "SquarePostSkeleton",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const isLoaded = ref(false);
|
||||
const skeletonRatio = ref(null);
|
||||
const skeletonSize = reactive(
|
||||
useElementSize(skeletonRatio, { width: 0, height: 0 }, { box: "border-box" })
|
||||
);
|
||||
const safeSize = computed(() => Math.max(skeletonSize.width / 3 - 2, 0));
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
if (isLoaded.value) {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
ref_key: "skeletonRatio",
|
||||
ref: skeletonRatio,
|
||||
class: "h-fit"
|
||||
}, _attrs))}>`);
|
||||
_push(ssrRenderComponent(unref(ContentLoader), {
|
||||
width: skeletonSize.width,
|
||||
height: "860"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<rect x="0" y="10" rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect><rect${ssrRenderAttr("x", skeletonSize.width / 3)} y="10" rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect><rect${ssrRenderAttr("x", 2 * skeletonSize.width / 3)} y="10" rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect><rect x="0"${ssrRenderAttr("y", 11 + skeletonSize.width / 3)} rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect><rect${ssrRenderAttr("x", skeletonSize.width / 3)}${ssrRenderAttr("y", 11 + skeletonSize.width / 3)} rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect><rect${ssrRenderAttr("x", 2 * skeletonSize.width / 3)}${ssrRenderAttr("y", 11 + skeletonSize.width / 3)} rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect><rect x="0"${ssrRenderAttr("y", 12 + 2 * skeletonSize.width / 3)} rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect><rect${ssrRenderAttr("x", skeletonSize.width / 3)}${ssrRenderAttr("y", 12 + 2 * skeletonSize.width / 3)} rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect><rect${ssrRenderAttr("x", 2 * skeletonSize.width / 3)}${ssrRenderAttr("y", 12 + 2 * skeletonSize.width / 3)} rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect><rect x="0"${ssrRenderAttr("y", 13 + 3 * skeletonSize.width / 3)} rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect><rect${ssrRenderAttr("x", skeletonSize.width / 3)}${ssrRenderAttr("y", 13 + 3 * skeletonSize.width / 3)} rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect><rect${ssrRenderAttr("x", 2 * skeletonSize.width / 3)}${ssrRenderAttr("y", 13 + 3 * skeletonSize.width / 3)} rx="3" ry="3"${ssrRenderAttr("width", safeSize.value)}${ssrRenderAttr("height", safeSize.value)}${_scopeId}></rect>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("rect", {
|
||||
x: "0",
|
||||
y: "10",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: skeletonSize.width / 3,
|
||||
y: "10",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["x", "width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: 2 * skeletonSize.width / 3,
|
||||
y: "10",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["x", "width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: "0",
|
||||
y: 11 + skeletonSize.width / 3,
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["y", "width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: skeletonSize.width / 3,
|
||||
y: 11 + skeletonSize.width / 3,
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["x", "y", "width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: 2 * skeletonSize.width / 3,
|
||||
y: 11 + skeletonSize.width / 3,
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["x", "y", "width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: "0",
|
||||
y: 12 + 2 * skeletonSize.width / 3,
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["y", "width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: skeletonSize.width / 3,
|
||||
y: 12 + 2 * skeletonSize.width / 3,
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["x", "y", "width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: 2 * skeletonSize.width / 3,
|
||||
y: 12 + 2 * skeletonSize.width / 3,
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["x", "y", "width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: "0",
|
||||
y: 13 + 3 * skeletonSize.width / 3,
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["y", "width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: skeletonSize.width / 3,
|
||||
y: 13 + 3 * skeletonSize.width / 3,
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["x", "y", "width", "height"]),
|
||||
createVNode("rect", {
|
||||
x: 2 * skeletonSize.width / 3,
|
||||
y: 13 + 3 * skeletonSize.width / 3,
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: safeSize.value,
|
||||
height: safeSize.value
|
||||
}, null, 8, ["x", "y", "width", "height"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/SquarePostSkeleton.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_0 = Object.assign(_sfc_main, { __name: "SquarePostSkeleton" });
|
||||
const loadGray = "" + __buildAssetsURL("gray.CKu3bSoY.jpg");
|
||||
|
||||
export { __nuxt_component_0 as _, loadGray as l };
|
||||
@@ -0,0 +1,25 @@
|
||||
import { defineComponent, resolveComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { aT as useRoute, u as useRouter$1, a as useConfigStore } from './server.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useRoute();
|
||||
useRouter$1();
|
||||
useConfigStore();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_RouterView = resolveComponent("RouterView");
|
||||
_push(ssrRenderComponent(_component_RouterView, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/add/product/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as _ };
|
||||
@@ -0,0 +1,476 @@
|
||||
import { defineComponent, ref, computed, withAsyncContext, watch, resolveDirective, unref, withCtx, mergeProps, createVNode, openBlock, createBlock, Fragment, renderList, withDirectives, createCommentVNode, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrInterpolate, ssrRenderAttr, ssrRenderList, ssrGetDirectiveProps, ssrRenderStyle } from 'vue/server-renderer';
|
||||
import { u as useRouter$1, a as useConfigStore, b as useUserStore, o as useCartStore, p as usePriceStore, m as useIntersectionObserver, _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { B as BasicIconOld } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import numbro from 'numbro';
|
||||
import { H as Highlights, T as Tabs, _ as __nuxt_component_1, a as _sfc_main$1$1, b as _sfc_main$4 } from './filter-CPczHNln.mjs';
|
||||
import { U as UserProfilePic } from './UserProfilePic-CSSFM-Xe.mjs';
|
||||
import { l as loadGray, _ as __nuxt_component_0$1 } from './gray-wOBznZcb.mjs';
|
||||
import { _ as _sfc_main$5 } from './FullScreenStories-Cwtzgmu3.mjs';
|
||||
import { u as useMediaStore } from './media-Cj7oyS0P.mjs';
|
||||
import { u as useUserPostStore } from './userPostsStore-zgAQCVWR.mjs';
|
||||
import { _ as _sfc_main$3 } from './ProductSearchList-B8ViCyeT.mjs';
|
||||
import { u as usePrice } from './usePrice-CFcNV1RQ.mjs';
|
||||
import { u as useAsyncData } from './asyncData-DVPmuEBB.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
import './index-DN2Eqyc3.mjs';
|
||||
import 'dom-align';
|
||||
import './index-CQMiaHEh.mjs';
|
||||
import './shallowequal-CJsWvZb3.mjs';
|
||||
import 'lodash-es/uniq.js';
|
||||
import './index-D4HrLPqa.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './index-BTlbWWOl.mjs';
|
||||
import 'lodash-es/isPlainObject.js';
|
||||
import 'resize-observer-polyfill';
|
||||
import './useRefs-BHKrVg4I.mjs';
|
||||
import 'lodash-es/pick.js';
|
||||
import './useMergedState-BZEfJ8Fl.mjs';
|
||||
import './media-CiMHc-Ka.mjs';
|
||||
import 'swiper/vue';
|
||||
import './empty_user-DSxcM_ac.mjs';
|
||||
import 'vue-content-loader';
|
||||
import './BasicInput-CgQV_gT5.mjs';
|
||||
import './like-D4L8S2C_.mjs';
|
||||
import './BasicButton-7YIRCRg8.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import 'swiper/modules';
|
||||
import './BasicActionSheet-BOh-xDh_.mjs';
|
||||
import './Checkbox-BqbMrYFp.mjs';
|
||||
import 'perfect-debounce';
|
||||
|
||||
function shortenUrl(url, maxLength = 50) {
|
||||
if (url.length <= maxLength) return url;
|
||||
const start = url.slice(0, Math.floor(maxLength / 2) - 3);
|
||||
const end = url.slice(-Math.floor(maxLength / 2));
|
||||
return `${start}...${end}`;
|
||||
}
|
||||
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
||||
__name: "Seller",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const router = useRouter$1();
|
||||
const selectedStoryId = ref(null);
|
||||
const activeKey = ref("products");
|
||||
ref(false);
|
||||
const config = useConfigStore();
|
||||
const user = useUserStore();
|
||||
const mediaStore = useMediaStore();
|
||||
useCartStore();
|
||||
const userPost = useUserPostStore();
|
||||
const onlinePrices = usePriceStore();
|
||||
const seller = computed(() => config.sellerConfig?.store);
|
||||
const tala18 = computed(() => onlinePrices?.tala18);
|
||||
const userStory = computed(() => {
|
||||
return mediaStore.users.find((x) => x.id === seller.value?.id);
|
||||
});
|
||||
const formatNumber = (num) => {
|
||||
if (num < 9999) return num;
|
||||
return numbro(num).format({
|
||||
average: true,
|
||||
// Converts 11230 -> 11.2K, 1000000 -> 1M
|
||||
mantissa: 1
|
||||
// Number of decimal places
|
||||
});
|
||||
};
|
||||
const videoThumbnails = ref({});
|
||||
const observer = ref();
|
||||
useIntersectionObserver(observer, async ([{ isIntersecting }]) => {
|
||||
if (isIntersecting && !userPost.loading && !userPost.endPage) {
|
||||
setTimeout(async () => {
|
||||
const nextPage = userPost.currentPage + 1;
|
||||
const data2 = await userPost.loadPosts(seller.value?.user_id, nextPage);
|
||||
userPost.loadStateNextPage(data2);
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
const { data } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData("productMainSeller", async () => {
|
||||
userPost.reset();
|
||||
return await userPost.loadPosts(seller.value?.user_id, 1);
|
||||
})), __temp = await __temp, __restore(), __temp);
|
||||
watch(data, () => {
|
||||
if (data) {
|
||||
userPost.loadStateNextPage(data.value);
|
||||
}
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
const _component_client_only = __nuxt_component_0;
|
||||
const _component_ATabs = Tabs;
|
||||
const _component_ATabPane = __nuxt_component_1;
|
||||
const _directive_lazy = resolveDirective("lazy");
|
||||
let _temp0;
|
||||
_push(`<div${ssrRenderAttrs(_attrs)} data-v-f04dd4d3><div class="absolute top-0 w-inherit right-0 left-0 sm:w-70vw justify-self-center" data-v-f04dd4d3><div class="flex justify-between w-full p-4 sm:hidden" data-v-f04dd4d3><div class="font-semibold text-lg" data-v-f04dd4d3>${ssrInterpolate(seller.value?.username)}</div>`);
|
||||
_push(ssrRenderComponent(_component_ClientOnly, null, {}, _parent));
|
||||
_push(`</div><div class="h-90vh sm:h-screen overflow-y-auto pb-5vh sm:pt-20" data-v-f04dd4d3><div class="px4 sm:justify-self-center" data-v-f04dd4d3><div class="flex" data-v-f04dd4d3>`);
|
||||
_push(ssrRenderComponent(UserProfilePic, {
|
||||
src: seller.value?.avatar,
|
||||
class: "sm:!w-12rem sm:!h-12rem sm:hidden",
|
||||
onClick: ($event) => userStory.value?.stories?.length === 0 || !userStory.value?.stories ? "" : selectedStoryId.value = seller.value?.id,
|
||||
"just-show-profile": userStory.value?.stories?.length === 0 || !userStory.value?.stories,
|
||||
seenStory: !userStory.value?.stories?.length || userStory.value?.stories?.every((item) => item.storyviews.find((_item) => _item.user_id === unref(user).user?.id || _item.user_id === "me")),
|
||||
showAdd: unref(config).isSeller
|
||||
}, null, _parent));
|
||||
_push(ssrRenderComponent(UserProfilePic, {
|
||||
src: seller.value?.avatar,
|
||||
class: "sm:!w-12rem sm:!h-12rem hidden sm:block",
|
||||
width: "",
|
||||
onClick: ($event) => userStory.value?.stories?.length === 0 || !userStory.value?.stories ? "" : selectedStoryId.value = seller.value?.id,
|
||||
"just-show-profile": userStory.value?.stories?.length === 0 || !userStory.value?.stories,
|
||||
seenStory: !userStory.value?.stories?.length || userStory.value?.stories?.every((item) => item.storyviews.find((_item) => _item.user_id === unref(user).user?.id || _item.user_id === "me")),
|
||||
showAdd: unref(config).isSeller
|
||||
}, null, _parent));
|
||||
_push(`<div class="p3 text-sm" data-v-f04dd4d3><h1 class="hidden sm:block" data-v-f04dd4d3>${ssrInterpolate(seller.value?.username)}</h1><div class="flex mt2 gap-3" data-v-f04dd4d3><div class="" data-v-f04dd4d3><div class="font-semibold" data-v-f04dd4d3>${ssrInterpolate(formatNumber(seller.value?.stats?.total_product ?? 0))}</div><div class="text-xs" data-v-f04dd4d3>${ssrInterpolate(unref(config).useString("products"))}</div></div>`);
|
||||
if (unref(config).isSeller) {
|
||||
_push(`<div data-v-f04dd4d3><div class="font-semibold" data-v-f04dd4d3>${ssrInterpolate(formatNumber(seller.value?.stats?.total_customer ?? 0))}</div><div class="text-xs" data-v-f04dd4d3>${ssrInterpolate(unref(config).useString("customers"))}</div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<div data-v-f04dd4d3><div class="font-semibold" data-v-f04dd4d3>${ssrInterpolate(formatNumber(unref(config).isSeller ? seller.value?.stats?.sell_total_order_count ?? 0 : unref(user)?.user?.stats?.buy_total_order_count ?? 0))}</div><div class="text-xs" data-v-f04dd4d3>${ssrInterpolate(unref(config).isSeller ? unref(config).useString("orders") : unref(config).useString("yourOrders"))}</div></div>`);
|
||||
if (unref(config).APP_HAS_GOLD && tala18.value) {
|
||||
_push(`<div class="" data-v-f04dd4d3><div class="font-semibold flex gap-1" data-v-f04dd4d3>${ssrInterpolate(
|
||||
// usePrice((tala18/1000)?? 0,true,'')
|
||||
unref(usePrice)(tala18.value / 10, true, "")
|
||||
)} <div class="text-xs" data-v-f04dd4d3>${ssrInterpolate(unref(config).useString("toman"))}</div></div><div class="text-xs" data-v-f04dd4d3>${ssrInterpolate(unref(config).useString("goldGramPrice"))}</div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div><div class="text-xs mt-5 whitespace-pre-line hidden sm:block" data-v-f04dd4d3>${ssrInterpolate(seller.value?.bio)}</div>`);
|
||||
if (seller.value?.website) {
|
||||
_push(`<a${ssrRenderAttr("href", "https://" + seller.value?.website)} target="_blank" class="hidden sm:block" data-v-f04dd4d3><div class="flex items-center text-xs gap-1 text-primary" data-v-f04dd4d3>`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:link-1",
|
||||
class: "text-primary",
|
||||
size: "20"
|
||||
}, null, _parent));
|
||||
_push(` ${ssrInterpolate(seller.value?.website)}</div></a>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (unref(config).ENAMAD_URL) {
|
||||
_push(`<div class="hidden sm:block" data-v-f04dd4d3> اینماد <a${ssrRenderAttr("href", unref(config).ENAMAD_URL)} target="_blank" data-v-f04dd4d3><div class="flex items-center text-xs gap-1 text-primary" data-v-f04dd4d3>`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:link-1",
|
||||
class: "text-primary",
|
||||
size: "20"
|
||||
}, null, _parent));
|
||||
_push(` ${ssrInterpolate(unref(shortenUrl)(unref(config).ENAMAD_URL))}</div></a></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div><div class="text-xs mt-5 whitespace-pre-line sm:hidden" data-v-f04dd4d3>${ssrInterpolate(seller.value?.bio)}</div>`);
|
||||
if (seller.value?.website) {
|
||||
_push(`<a${ssrRenderAttr("href", "https://" + seller.value?.website)} target="_blank" class="sm:hidden" data-v-f04dd4d3><div class="flex items-center text-xs gap-1 text-primary" data-v-f04dd4d3>`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:link-1",
|
||||
class: "text-primary",
|
||||
size: "20"
|
||||
}, null, _parent));
|
||||
_push(` ${ssrInterpolate(seller.value?.website)}</div></a>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (unref(config).ENAMAD_URL) {
|
||||
_push(`<div class="sm:hidden" data-v-f04dd4d3> اینماد <a${ssrRenderAttr("href", unref(config).ENAMAD_URL)} target="_blank" data-v-f04dd4d3><div class="flex items-center text-xs gap-1 text-primary" data-v-f04dd4d3>`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:link-1",
|
||||
class: "text-primary",
|
||||
size: "20"
|
||||
}, null, _parent));
|
||||
_push(` ${ssrInterpolate(unref(shortenUrl)(unref(config).ENAMAD_URL))}</div></a></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(ssrRenderComponent(_component_client_only, null, {}, _parent));
|
||||
_push(`<div class="mt-8 mb-4 flex -me16px" data-v-f04dd4d3>`);
|
||||
_push(ssrRenderComponent(Highlights, { "current-user": seller.value }, null, _parent));
|
||||
_push(`</div></div>`);
|
||||
_push(ssrRenderComponent(_component_ATabs, {
|
||||
activeKey: activeKey.value,
|
||||
"onUpdate:activeKey": ($event) => activeKey.value = $event,
|
||||
centered: "",
|
||||
class: "instaTab"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(_component_ATabPane, {
|
||||
class: "!w-full",
|
||||
key: "products"
|
||||
}, {
|
||||
tab: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<span data-v-f04dd4d3${_scopeId2}>`);
|
||||
_push3(ssrRenderComponent(_sfc_main$1$1, null, null, _parent3, _scopeId2));
|
||||
_push3(`</span>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("span", null, [
|
||||
createVNode(_sfc_main$1$1)
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<div class="w-full grid sm:grid-cols-4 grid-cols-3 mt-[1px] gap-2px" data-v-f04dd4d3${_scopeId2}><!--[-->`);
|
||||
ssrRenderList(unref(userPost).posts, (post, i) => {
|
||||
_push3(`<div class="w-full aspect-square relative" data-v-f04dd4d3${_scopeId2}>`);
|
||||
if (post.files?.length) {
|
||||
_push3(`<!--[-->`);
|
||||
if (post.files[0]?.type === "image") {
|
||||
_push3(`<img${ssrRenderAttrs(_temp0 = mergeProps({
|
||||
class: "w-full h-full object-cover",
|
||||
alt: unref(config).appName.en
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(config).useDataStorage(post.files[0].url), loading: unref(loadGray), error: unref(loadGray) })))} data-v-f04dd4d3${_scopeId2}>${"textContent" in _temp0 ? ssrInterpolate(_temp0.textContent) : _temp0.innerHTML ?? ""}`);
|
||||
} else if (post.files[0]?.type === "video") {
|
||||
_push3(`<div class="relative w-full h-full" data-v-f04dd4d3${_scopeId2}><video${ssrRenderAttr("src", post.files[0]?.url)} class="hidden" data-v-f04dd4d3${_scopeId2}></video><img${ssrRenderAttr("src", videoThumbnails.value[post.files[0]?.url])} class="w-full h-full object-cover" alt="Video Thumbnail" data-v-f04dd4d3${_scopeId2}><div class="absolute inset-0 flex items-center justify-center bg-black bg-opacity-30" data-v-f04dd4d3${_scopeId2}><svg class="w-12 h-12 text-white" fill="currentColor" viewBox="0 0 24 24" data-v-f04dd4d3${_scopeId2}><path d="M8 5v14l11-7z" data-v-f04dd4d3${_scopeId2}></path></svg></div></div>`);
|
||||
} else {
|
||||
_push3(`<!---->`);
|
||||
}
|
||||
_push3(`<!--]-->`);
|
||||
} else {
|
||||
_push3(`<!---->`);
|
||||
}
|
||||
_push3(`</div>`);
|
||||
});
|
||||
_push3(`<!--]--></div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", { class: "w-full grid sm:grid-cols-4 grid-cols-3 mt-[1px] gap-2px" }, [
|
||||
(openBlock(true), createBlock(Fragment, null, renderList(unref(userPost).posts, (post, i) => {
|
||||
return openBlock(), createBlock("div", {
|
||||
key: i,
|
||||
class: "w-full aspect-square relative",
|
||||
onClick: ($event) => unref(router).push({ name: "posts", query: { target: post.id, userId: seller.value?.user_id } })
|
||||
}, [
|
||||
post.files?.length ? (openBlock(), createBlock(Fragment, { key: 0 }, [
|
||||
post.files[0]?.type === "image" ? withDirectives((openBlock(), createBlock("img", {
|
||||
key: 0,
|
||||
class: "w-full h-full object-cover",
|
||||
alt: unref(config).appName.en
|
||||
}, null, 8, ["alt"])), [
|
||||
[_directive_lazy, { src: unref(config).useDataStorage(post.files[0].url), loading: unref(loadGray), error: unref(loadGray) }]
|
||||
]) : post.files[0]?.type === "video" ? (openBlock(), createBlock("div", {
|
||||
key: 1,
|
||||
class: "relative w-full h-full"
|
||||
}, [
|
||||
createVNode("video", {
|
||||
ref_for: true,
|
||||
ref: "videoRefs",
|
||||
src: post.files[0]?.url,
|
||||
class: "hidden"
|
||||
}, null, 8, ["src"]),
|
||||
createVNode("img", {
|
||||
src: videoThumbnails.value[post.files[0]?.url],
|
||||
class: "w-full h-full object-cover",
|
||||
alt: "Video Thumbnail"
|
||||
}, null, 8, ["src"]),
|
||||
createVNode("div", { class: "absolute inset-0 flex items-center justify-center bg-black bg-opacity-30" }, [
|
||||
(openBlock(), createBlock("svg", {
|
||||
class: "w-12 h-12 text-white",
|
||||
fill: "currentColor",
|
||||
viewBox: "0 0 24 24"
|
||||
}, [
|
||||
createVNode("path", { d: "M8 5v14l11-7z" })
|
||||
]))
|
||||
])
|
||||
])) : createCommentVNode("", true)
|
||||
], 64)) : createCommentVNode("", true)
|
||||
], 8, ["onClick"]);
|
||||
}), 128))
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(ssrRenderComponent(_component_ATabPane, {
|
||||
class: "!w-full",
|
||||
key: "search"
|
||||
}, {
|
||||
tab: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<span data-v-f04dd4d3${_scopeId2}>`);
|
||||
_push3(ssrRenderComponent(_sfc_main$4, null, null, _parent3, _scopeId2));
|
||||
_push3(`</span>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("span", null, [
|
||||
createVNode(_sfc_main$4)
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(ssrRenderComponent(_sfc_main$3, { class: "!-mt-3" }, null, _parent3, _scopeId2));
|
||||
} else {
|
||||
return [
|
||||
createVNode(_sfc_main$3, { class: "!-mt-3" })
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
} else {
|
||||
return [
|
||||
createVNode(_component_ATabPane, {
|
||||
class: "!w-full",
|
||||
key: "products"
|
||||
}, {
|
||||
tab: withCtx(() => [
|
||||
createVNode("span", null, [
|
||||
createVNode(_sfc_main$1$1)
|
||||
])
|
||||
]),
|
||||
default: withCtx(() => [
|
||||
createVNode("div", { class: "w-full grid sm:grid-cols-4 grid-cols-3 mt-[1px] gap-2px" }, [
|
||||
(openBlock(true), createBlock(Fragment, null, renderList(unref(userPost).posts, (post, i) => {
|
||||
return openBlock(), createBlock("div", {
|
||||
key: i,
|
||||
class: "w-full aspect-square relative",
|
||||
onClick: ($event) => unref(router).push({ name: "posts", query: { target: post.id, userId: seller.value?.user_id } })
|
||||
}, [
|
||||
post.files?.length ? (openBlock(), createBlock(Fragment, { key: 0 }, [
|
||||
post.files[0]?.type === "image" ? withDirectives((openBlock(), createBlock("img", {
|
||||
key: 0,
|
||||
class: "w-full h-full object-cover",
|
||||
alt: unref(config).appName.en
|
||||
}, null, 8, ["alt"])), [
|
||||
[_directive_lazy, { src: unref(config).useDataStorage(post.files[0].url), loading: unref(loadGray), error: unref(loadGray) }]
|
||||
]) : post.files[0]?.type === "video" ? (openBlock(), createBlock("div", {
|
||||
key: 1,
|
||||
class: "relative w-full h-full"
|
||||
}, [
|
||||
createVNode("video", {
|
||||
ref_for: true,
|
||||
ref: "videoRefs",
|
||||
src: post.files[0]?.url,
|
||||
class: "hidden"
|
||||
}, null, 8, ["src"]),
|
||||
createVNode("img", {
|
||||
src: videoThumbnails.value[post.files[0]?.url],
|
||||
class: "w-full h-full object-cover",
|
||||
alt: "Video Thumbnail"
|
||||
}, null, 8, ["src"]),
|
||||
createVNode("div", { class: "absolute inset-0 flex items-center justify-center bg-black bg-opacity-30" }, [
|
||||
(openBlock(), createBlock("svg", {
|
||||
class: "w-12 h-12 text-white",
|
||||
fill: "currentColor",
|
||||
viewBox: "0 0 24 24"
|
||||
}, [
|
||||
createVNode("path", { d: "M8 5v14l11-7z" })
|
||||
]))
|
||||
])
|
||||
])) : createCommentVNode("", true)
|
||||
], 64)) : createCommentVNode("", true)
|
||||
], 8, ["onClick"]);
|
||||
}), 128))
|
||||
])
|
||||
]),
|
||||
_: 1
|
||||
}),
|
||||
createVNode(_component_ATabPane, {
|
||||
class: "!w-full",
|
||||
key: "search"
|
||||
}, {
|
||||
tab: withCtx(() => [
|
||||
createVNode("span", null, [
|
||||
createVNode(_sfc_main$4)
|
||||
])
|
||||
]),
|
||||
default: withCtx(() => [
|
||||
createVNode(_sfc_main$3, { class: "!-mt-3" })
|
||||
]),
|
||||
_: 1
|
||||
})
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`<div style="${ssrRenderStyle(!unref(userPost).loading ? null : { display: "none" })}" class="w-full opacity-0 relative" data-v-f04dd4d3> load </div>`);
|
||||
if (unref(userPost).loading) {
|
||||
_push(ssrRenderComponent(__nuxt_component_0$1, null, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
if (selectedStoryId.value) {
|
||||
_push(ssrRenderComponent(_sfc_main$5, {
|
||||
id: selectedStoryId.value,
|
||||
"onUpdate:id": ($event) => selectedStoryId.value = $event,
|
||||
specifyId: ""
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</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("views/base/pages/user/userMain/components/Seller.vue");
|
||||
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
|
||||
};
|
||||
const Seller = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-f04dd4d3"]]);
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(Seller, _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("views/base/pages/user/userMain/index.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/user/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,540 @@
|
||||
import { defineComponent, ref, reactive, mergeProps, unref, withCtx, createVNode, withKeys, createTextVNode, toDisplayString, watch, nextTick, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrInterpolate, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { B as BasicSheet } from './index-zsqPNrGJ.mjs';
|
||||
import { F as Form, _ as _sfc_main$3 } from './index-C5WgqxkU.mjs';
|
||||
import { u as useRouter$1, a as useConfigStore, b as useUserStore, l as login, s as supabase, c as setToken, g as goToProfile, d as api$1 } from './server.mjs';
|
||||
import { _ as __nuxt_component_1$1, R as Radio } from './RadioButton-CE-ccpG2.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { L as Logo } from './Logo-CS_PsVSS.mjs';
|
||||
import { B as BasicInput } from './BasicInput-CgQV_gT5.mjs';
|
||||
import { B as BasicButton } from './BasicButton-7YIRCRg8.mjs';
|
||||
import { B as BasicIconOld } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { c as clearStorySeen } from './media-CiMHc-Ka.mjs';
|
||||
import { _ as __nuxt_component_0 } from './Logo1-niQqxVlt.mjs';
|
||||
import { I as InstaInput } from './InstaInput-Cs7_qhi7.mjs';
|
||||
import '@vueuse/gesture';
|
||||
import '@headlessui/vue';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'framesync';
|
||||
import 'popmotion';
|
||||
import 'style-value-types';
|
||||
import './close_light-DbrEdRZI.mjs';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import './FormItem-Uo-Qw9vC.mjs';
|
||||
import 'lodash-es/cloneDeep.js';
|
||||
import 'async-validator';
|
||||
import 'lodash-es/find.js';
|
||||
import './index-DN2Eqyc3.mjs';
|
||||
import 'dom-align';
|
||||
import './index-BTlbWWOl.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import 'lodash-es/isEqual.js';
|
||||
import 'compute-scroll-into-view';
|
||||
import 'lodash-es/intersection.js';
|
||||
import 'lodash-es/debounce.js';
|
||||
import 'lodash-es/omit.js';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
import './Checkbox-BqbMrYFp.mjs';
|
||||
import './usePrice-CFcNV1RQ.mjs';
|
||||
import './index-D4HrLPqa.mjs';
|
||||
import 'lodash-es/isPlainObject.js';
|
||||
import 'resize-observer-polyfill';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
|
||||
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
||||
__name: "ChangeLanguage",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
open: { type: Boolean }
|
||||
},
|
||||
emits: ["update:open"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
const config = useConfigStore();
|
||||
const sheetRef = ref(null);
|
||||
const value = ref("en");
|
||||
const props = __props;
|
||||
const emits = __emit;
|
||||
function changeLanguage(val) {
|
||||
config.lang = val.target.value;
|
||||
closeSheet();
|
||||
}
|
||||
const radioStyle = reactive({
|
||||
display: "flex",
|
||||
height: "40px",
|
||||
lineHeight: "40px"
|
||||
});
|
||||
watch(props, (value2) => {
|
||||
if (value2.open) {
|
||||
openSheet();
|
||||
} else {
|
||||
closeSheet();
|
||||
}
|
||||
});
|
||||
async function openSheet() {
|
||||
await nextTick();
|
||||
await sheetRef.value?.setOpen();
|
||||
}
|
||||
async function closeSheet() {
|
||||
await nextTick();
|
||||
await sheetRef.value?.setClose();
|
||||
emits("update:open", false);
|
||||
}
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_a_radio_group = __nuxt_component_1$1;
|
||||
const _component_a_radio = Radio;
|
||||
_push(ssrRenderComponent(BasicSheet, mergeProps({
|
||||
title: "",
|
||||
ref_key: "sheetRef",
|
||||
ref: sheetRef,
|
||||
headerCls: "",
|
||||
closeOnClickOutside: "",
|
||||
onOnClickOutside: ($event) => emits("update:open", false)
|
||||
}, _attrs), {
|
||||
header: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<div flex justify-center items-center flex-col p-2 data-v-ddbacca2${_scopeId}><div bg-gray-500 h-2px w-2.5rem data-v-ddbacca2${_scopeId}></div></div><div data-v-ddbacca2${_scopeId}>`);
|
||||
_push2(ssrRenderComponent(_sfc_main$3, {
|
||||
class: "w-1rem mt-5 ms-5",
|
||||
onClick: closeSheet
|
||||
}, null, _parent2, _scopeId));
|
||||
_push2(`</div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", {
|
||||
flex: "",
|
||||
"justify-center": "",
|
||||
"items-center": "",
|
||||
"flex-col": "",
|
||||
"p-2": ""
|
||||
}, [
|
||||
createVNode("div", {
|
||||
"bg-gray-500": "",
|
||||
"h-2px": "",
|
||||
"w-2.5rem": ""
|
||||
})
|
||||
]),
|
||||
createVNode("div", null, [
|
||||
createVNode(_sfc_main$3, {
|
||||
class: "w-1rem mt-5 ms-5",
|
||||
onClick: closeSheet
|
||||
})
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<div class="h-20vh px-5 mt3" data-v-ddbacca2${_scopeId}><div class="font-semibold text-xl" data-v-ddbacca2${_scopeId}>${ssrInterpolate(unref(config).useString("selectYourLanguage"))}</div><div class="mt5 rounded-xl border-gray-200 border-solid border-1px py-2" data-v-ddbacca2${_scopeId}>`);
|
||||
_push2(ssrRenderComponent(_component_a_radio_group, {
|
||||
value: value.value,
|
||||
"onUpdate:value": ($event) => value.value = $event,
|
||||
class: "lang-login w-full",
|
||||
onChange: changeLanguage
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(ssrRenderComponent(_component_a_radio, {
|
||||
style: radioStyle,
|
||||
value: "en",
|
||||
class: unref(config).isNightStore ? "text-white" : "text-black"
|
||||
}, {
|
||||
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
||||
if (_push4) {
|
||||
_push4(`${ssrInterpolate(unref(config).useString("english"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("english")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent3, _scopeId2));
|
||||
_push3(ssrRenderComponent(_component_a_radio, {
|
||||
style: radioStyle,
|
||||
value: "fa",
|
||||
class: unref(config).isNightStore ? "text-white" : "text-black"
|
||||
}, {
|
||||
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
||||
if (_push4) {
|
||||
_push4(`${ssrInterpolate(unref(config).useString("persian"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("persian")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent3, _scopeId2));
|
||||
} else {
|
||||
return [
|
||||
createVNode(_component_a_radio, {
|
||||
style: radioStyle,
|
||||
value: "en",
|
||||
class: unref(config).isNightStore ? "text-white" : "text-black"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createTextVNode(toDisplayString(unref(config).useString("english")), 1)
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["style", "class"]),
|
||||
createVNode(_component_a_radio, {
|
||||
style: radioStyle,
|
||||
value: "fa",
|
||||
class: unref(config).isNightStore ? "text-white" : "text-black"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createTextVNode(toDisplayString(unref(config).useString("persian")), 1)
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["style", "class"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(`</div></div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", { class: "h-20vh px-5 mt3" }, [
|
||||
createVNode("div", { class: "font-semibold text-xl" }, toDisplayString(unref(config).useString("selectYourLanguage")), 1),
|
||||
createVNode("div", { class: "mt5 rounded-xl border-gray-200 border-solid border-1px py-2" }, [
|
||||
createVNode(_component_a_radio_group, {
|
||||
value: value.value,
|
||||
"onUpdate:value": ($event) => value.value = $event,
|
||||
class: "lang-login w-full",
|
||||
onChange: changeLanguage
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createVNode(_component_a_radio, {
|
||||
style: radioStyle,
|
||||
value: "en",
|
||||
class: unref(config).isNightStore ? "text-white" : "text-black"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createTextVNode(toDisplayString(unref(config).useString("english")), 1)
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["style", "class"]),
|
||||
createVNode(_component_a_radio, {
|
||||
style: radioStyle,
|
||||
value: "fa",
|
||||
class: unref(config).isNightStore ? "text-white" : "text-black"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createTextVNode(toDisplayString(unref(config).useString("persian")), 1)
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["style", "class"])
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["value", "onUpdate:value"])
|
||||
])
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
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("components/ChangeLanguage.vue");
|
||||
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_1 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$2, [["__scopeId", "data-v-ddbacca2"]]), { __name: "ChangeLanguage" });
|
||||
const _imports_0 = "" + __buildAssetsURL("logo_company.SCj7r8dk.svg");
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const router = useRouter$1();
|
||||
const config = useConfigStore();
|
||||
ref(null);
|
||||
const user = useUserStore();
|
||||
const open = ref(false);
|
||||
function signupPage() {
|
||||
router.push("/auth/register");
|
||||
}
|
||||
const loading = ref(false);
|
||||
const formRef = ref(null);
|
||||
const model = reactive({
|
||||
email: "",
|
||||
password: ""
|
||||
});
|
||||
reactive({
|
||||
email: false,
|
||||
password: false
|
||||
});
|
||||
const submitForm = async () => {
|
||||
console.log("model ===>", model);
|
||||
try {
|
||||
await formRef.value.validate();
|
||||
loading.value = true;
|
||||
const res = await login(model.email, model.password);
|
||||
await supabase.auth.setSession(res.session);
|
||||
setToken(res.session.access_token);
|
||||
await user.getUserInfo();
|
||||
clearStorySeen();
|
||||
goToProfile();
|
||||
} catch (e) {
|
||||
if (e?.response?.status === 404) {
|
||||
api$1.warn(config.useString("notExitUser"));
|
||||
} else if (e?.response?.status === 401) {
|
||||
api$1.warn(config.useString("invalidLogin"));
|
||||
} else {
|
||||
api$1.warn(config.useString("invalidLogin"));
|
||||
}
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
ref("en");
|
||||
reactive({
|
||||
display: "flex",
|
||||
height: "30px",
|
||||
lineHeight: "30px"
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_AForm = Form;
|
||||
const _component_ChangeLanguage = __nuxt_component_1;
|
||||
const _component_Logo = Logo;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: "sm:grid grid-cols-3 sm:w-full",
|
||||
dir: unref(config).isRTL ? "ltr" : "rtl"
|
||||
}, _attrs))}><div class="flex justify-center items-center h-screen flex-col relative sm:px-20"><div class="p-4 w-full -mt-10"><div class="text-center mb-4rem sm:hidden">`);
|
||||
_push(ssrRenderComponent(__nuxt_component_0, { class: "w-5rem" }, null, _parent));
|
||||
_push(`</div>`);
|
||||
_push(ssrRenderComponent(_component_AForm, {
|
||||
layout: "vertical",
|
||||
ref_key: "formRef",
|
||||
ref: formRef,
|
||||
model
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(InstaInput, {
|
||||
value: model.email,
|
||||
"onUpdate:value": ($event) => model.email = $event,
|
||||
label: "phone",
|
||||
name: "email",
|
||||
rules: []
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(ssrRenderComponent(BasicInput, {
|
||||
value: model.email,
|
||||
"onUpdate:value": ($event) => model.email = $event,
|
||||
"place-holder": unref(config).useString("phone")
|
||||
}, null, _parent3, _scopeId2));
|
||||
} else {
|
||||
return [
|
||||
createVNode(BasicInput, {
|
||||
value: model.email,
|
||||
"onUpdate:value": ($event) => model.email = $event,
|
||||
"place-holder": unref(config).useString("phone")
|
||||
}, null, 8, ["value", "onUpdate:value", "place-holder"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(ssrRenderComponent(InstaInput, {
|
||||
value: model.password,
|
||||
"onUpdate:value": ($event) => model.password = $event,
|
||||
label: "password",
|
||||
name: "password",
|
||||
rules: []
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(ssrRenderComponent(BasicInput, {
|
||||
value: model.password,
|
||||
"onUpdate:value": ($event) => model.password = $event,
|
||||
"place-holder": unref(config).useString("password"),
|
||||
"is-password": "",
|
||||
onKeyup: submitForm
|
||||
}, null, _parent3, _scopeId2));
|
||||
} else {
|
||||
return [
|
||||
createVNode(BasicInput, {
|
||||
value: model.password,
|
||||
"onUpdate:value": ($event) => model.password = $event,
|
||||
"place-holder": unref(config).useString("password"),
|
||||
"is-password": "",
|
||||
onKeyup: withKeys(submitForm, ["enter"])
|
||||
}, null, 8, ["value", "onUpdate:value", "place-holder"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(ssrRenderComponent(BasicButton, {
|
||||
block: "",
|
||||
class: "mt-2",
|
||||
type: "primary",
|
||||
onClick: submitForm,
|
||||
loading: loading.value,
|
||||
size: "large",
|
||||
curve: ""
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`${ssrInterpolate(unref(config).useString("loginButton"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("loginButton")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(`<div class="justify-center items-center mt-5 font-semibol"${_scopeId}><div class="text-center text-sm cursor-pointer"${_scopeId}>${ssrInterpolate(unref(config).useString("forgetPassword"))}</div></div><div class="justify-center items-center mt-5 font-semibol"${_scopeId}><div class="text-center text-sm cursor-pointer"${_scopeId}>${ssrInterpolate(unref(config).useString("goToHomePage"))}</div></div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode(InstaInput, {
|
||||
value: model.email,
|
||||
"onUpdate:value": ($event) => model.email = $event,
|
||||
label: "phone",
|
||||
name: "email",
|
||||
rules: []
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createVNode(BasicInput, {
|
||||
value: model.email,
|
||||
"onUpdate:value": ($event) => model.email = $event,
|
||||
"place-holder": unref(config).useString("phone")
|
||||
}, null, 8, ["value", "onUpdate:value", "place-holder"])
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["value", "onUpdate:value"]),
|
||||
createVNode(InstaInput, {
|
||||
value: model.password,
|
||||
"onUpdate:value": ($event) => model.password = $event,
|
||||
label: "password",
|
||||
name: "password",
|
||||
rules: []
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createVNode(BasicInput, {
|
||||
value: model.password,
|
||||
"onUpdate:value": ($event) => model.password = $event,
|
||||
"place-holder": unref(config).useString("password"),
|
||||
"is-password": "",
|
||||
onKeyup: withKeys(submitForm, ["enter"])
|
||||
}, null, 8, ["value", "onUpdate:value", "place-holder"])
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["value", "onUpdate:value"]),
|
||||
createVNode(BasicButton, {
|
||||
block: "",
|
||||
class: "mt-2",
|
||||
type: "primary",
|
||||
onClick: submitForm,
|
||||
loading: loading.value,
|
||||
size: "large",
|
||||
curve: ""
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createTextVNode(toDisplayString(unref(config).useString("loginButton")), 1)
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["loading"]),
|
||||
createVNode("div", { class: "justify-center items-center mt-5 font-semibol" }, [
|
||||
createVNode("div", {
|
||||
class: "text-center text-sm cursor-pointer",
|
||||
onClick: ($event) => unref(router).push({ name: "auth-forget" })
|
||||
}, toDisplayString(unref(config).useString("forgetPassword")), 9, ["onClick"])
|
||||
]),
|
||||
createVNode("div", { class: "justify-center items-center mt-5 font-semibol" }, [
|
||||
createVNode("div", {
|
||||
class: "text-center text-sm cursor-pointer",
|
||||
onClick: ($event) => unref(router).push({ name: "home" })
|
||||
}, toDisplayString(unref(config).useString("goToHomePage")), 9, ["onClick"])
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div><div class="absolute top-2rem flex justify-center items-center gap-1">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:arrow-down",
|
||||
size: "16"
|
||||
}, null, _parent));
|
||||
_push(` ${ssrInterpolate(unref(config).lang === "fa" ? unref(config).useString("persian") : unref(config).useString("english"))}</div>`);
|
||||
_push(ssrRenderComponent(_component_ChangeLanguage, {
|
||||
open: open.value,
|
||||
"onUpdate:open": ($event) => open.value = $event
|
||||
}, null, _parent));
|
||||
_push(`<div class="w-full absolute flex flex-col bottom-0 pb2 sm:px-20">`);
|
||||
_push(ssrRenderComponent(BasicButton, {
|
||||
curve: "",
|
||||
size: "large",
|
||||
class: "!mx4 border-primary text-primary mb-4",
|
||||
onClick: ($event) => signupPage()
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("createNewAccount"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("createNewAccount")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`<div class="flex items-center justify-center"><img${ssrRenderAttr("src", _imports_0)} alt="" class="w-2rem"><div class="text-gray-7 text-lg">${ssrInterpolate(unref(config).useString("montech"))}</div></div></div></div><div class="hidden sm:flex items-center justify-center col-span-2">`);
|
||||
_push(ssrRenderComponent(_component_Logo, { class: "w-50%" }, null, _parent));
|
||||
_push(`</div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("views/login/index.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/auth/login/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,152 @@
|
||||
import { u as useRouter$1, a as useConfigStore, b as useUserStore, m as useIntersectionObserver, _ as __nuxt_component_0, n as getToken, d as api$1 } from './server.mjs';
|
||||
import { defineComponent, computed, ref, withAsyncContext, provide, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderClass, ssrRenderComponent, ssrInterpolate, ssrRenderList, ssrRenderStyle } from 'vue/server-renderer';
|
||||
import { P as Post, _ as _sfc_main$1 } from './PostCardSkeleton-CeuWkTWh.mjs';
|
||||
import { u as useUserPostStore } from './userPostsStore-zgAQCVWR.mjs';
|
||||
import { C as CommentAddEdit, _ as _sfc_main$2, d as deletePostLike, c as createPostLike } from './moreOptionProduct-CrrGHZLj.mjs';
|
||||
import { d as deleteSave, c as createSave } from './save-3yOnAiJS.mjs';
|
||||
import { u as useAsyncData } from './asyncData-DVPmuEBB.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const router = useRouter$1();
|
||||
const config = useConfigStore();
|
||||
const user = useUserStore();
|
||||
const userId = computed(() => router.currentRoute.value.query.userId);
|
||||
const commentPostId = ref();
|
||||
const commentVisible = ref(false);
|
||||
const optionVisible = ref(false);
|
||||
const optionPostId = ref();
|
||||
const ownerPostId = ref();
|
||||
const addLikeLoading = ref(false);
|
||||
const userPostStore = useUserPostStore();
|
||||
computed(() => router.currentRoute.value.query.target || null);
|
||||
function handleLike(isLiked, id) {
|
||||
try {
|
||||
addLikeLoading.value = true;
|
||||
if (getToken()) {
|
||||
if (isLiked) {
|
||||
deletePostLike(id);
|
||||
const index = userPostStore.posts?.findIndex((x) => x.id === id);
|
||||
userPostStore.posts[index]?.likes.splice(userPostStore.posts[index]?.likes?.findIndex((y) => y.user_id === user.user.id));
|
||||
} else {
|
||||
createPostLike(id);
|
||||
const index = userPostStore.posts?.findIndex((x) => x.id === id);
|
||||
userPostStore.posts[index]?.likes.push({
|
||||
product_id: id,
|
||||
user_id: user.user.id
|
||||
});
|
||||
}
|
||||
} else {
|
||||
router.push({ name: "auth-login" });
|
||||
api$1.warn(config.useString("pleaseLoginOrRegister"));
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
} finally {
|
||||
addLikeLoading.value = false;
|
||||
}
|
||||
}
|
||||
function addCommentId(id) {
|
||||
userPostStore.posts[userPostStore.posts.findIndex((x) => x.id === commentPostId.value)]?.comments.push({ id });
|
||||
}
|
||||
function deleteCommentId() {
|
||||
userPostStore.posts[userPostStore.posts.findIndex((x) => x.id === commentPostId.value)]?.comments.splice(0, 1);
|
||||
}
|
||||
const observer = ref();
|
||||
useIntersectionObserver(observer, async ([{ isIntersecting }]) => {
|
||||
if (isIntersecting && !userPostStore.loading && !userPostStore.endPage) {
|
||||
const nextPage = userPostStore.currentPage + 1;
|
||||
const data2 = await userPostStore.loadPosts(userId.value, nextPage);
|
||||
userPostStore.loadStateNextPage(data2);
|
||||
}
|
||||
});
|
||||
const { data } = ([__temp, __restore] = withAsyncContext(async () => useAsyncData("productPostMainSeller", async () => {
|
||||
if (userPostStore.posts.length === 0) {
|
||||
return await userPostStore.loadPosts(userId.value, 1);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
})), __temp = await __temp, __restore(), __temp);
|
||||
function handleSave(isSaved, id) {
|
||||
if (getToken()) {
|
||||
if (isSaved) {
|
||||
deleteSave(id);
|
||||
const index = userPostStore.posts?.findIndex((x) => x.id === id);
|
||||
userPostStore.posts[index]?.saved.splice(userPostStore.posts[index]?.saved?.findIndex((y) => y.user_id === user.user.id));
|
||||
} else {
|
||||
createSave(id);
|
||||
const index = userPostStore.posts?.findIndex((x) => x.id === id);
|
||||
userPostStore.posts[index]?.saved.push({
|
||||
product_id: id,
|
||||
user_id: user.user.id
|
||||
});
|
||||
}
|
||||
} else {
|
||||
router.push({ name: "auth-login" });
|
||||
api$1.warn(config.useString("pleaseLoginOrRegister"));
|
||||
}
|
||||
}
|
||||
function openOption(id) {
|
||||
optionPostId.value = id;
|
||||
optionVisible.value = true;
|
||||
}
|
||||
function openComment(id, owner_id) {
|
||||
commentPostId.value = id;
|
||||
commentVisible.value = true;
|
||||
ownerPostId.value = owner_id;
|
||||
}
|
||||
provide("ownerPostId", ownerPostId);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "sm:w-500px justify-self-center" }, _attrs))}><div class="${ssrRenderClass(["z-20 sticky w-full top-0", !unref(config).isNightStore ? "bg-header-color" : "bg-header-color-dark "])}"><div class="px-4 flex items-center justify-between"><div class="flex gap-3 py-3 items-center">`);
|
||||
_push(ssrRenderComponent(_component_ClientOnly, null, {}, _parent));
|
||||
_push(`<div class="font-semibold">${ssrInterpolate(unref(config).sellerConfig?.store?.username)}</div></div></div></div><div class="pt-5 overflow-y-auto userPostScroll h-95vh pb-3rem scrollHome"><!--[-->`);
|
||||
ssrRenderList(unref(userPostStore).posts, (post, index) => {
|
||||
_push(`<div class="tg-item" style="${ssrRenderStyle({ transitionDelay: index * 50 + "ms" })}">`);
|
||||
_push(ssrRenderComponent(Post, {
|
||||
index,
|
||||
post,
|
||||
onOpenOption: openOption,
|
||||
onOpenComment: openComment,
|
||||
onHandleLike: handleLike,
|
||||
onHandleSave: handleSave,
|
||||
"scroll-save": "scrollPositionSeller",
|
||||
"add-like-loading": addLikeLoading.value
|
||||
}, null, _parent));
|
||||
_push(`</div>`);
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
if (unref(userPostStore).loading) {
|
||||
_push(ssrRenderComponent(_sfc_main$1, null, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<div style="${ssrRenderStyle(!unref(userPostStore).loading ? null : { display: "none" })}" class="w-full opacity-1 relative"> load </div></div>`);
|
||||
_push(ssrRenderComponent(CommentAddEdit, {
|
||||
id: commentPostId.value,
|
||||
open: commentVisible.value,
|
||||
"onUpdate:open": ($event) => commentVisible.value = $event,
|
||||
onAddCommentId: addCommentId,
|
||||
onDeleteCommentId: deleteCommentId
|
||||
}, null, _parent));
|
||||
_push(ssrRenderComponent(_sfc_main$2, {
|
||||
id: optionPostId.value,
|
||||
open: optionVisible.value,
|
||||
"onUpdate:open": ($event) => optionVisible.value = $event
|
||||
}, null, _parent));
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/base/pages/user/userMain/posts/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as _ };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/cart/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/fav/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,666 @@
|
||||
import { defineComponent, ref, mergeProps, withCtx, openBlock, createBlock, Fragment, renderList, withModifiers, createVNode, unref, resolveDirective, reactive, toDisplayString, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrRenderList, ssrGetDirectiveProps, ssrInterpolate, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { u as useRouter$1, a as useConfigStore, _ as __nuxt_component_0, b as useUserStore, aU as watchDebounced, e as loading, aV as getCustomerList, q as useElementSize, s as supabase } from './server.mjs';
|
||||
import { _ as _sfc_main$9, C as Collapse, a as __nuxt_component_1, g as getCategoriesTree } from './ProductSearchList-B8ViCyeT.mjs';
|
||||
import { B as BasicIconOld } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { p as previewImg$1 } from './logo_preview-CJTcB_Eg.mjs';
|
||||
import { ContentLoader } from 'vue-content-loader';
|
||||
import { T as Tag } from './index-CnnQbQCE.mjs';
|
||||
import { C as CustomerCard, a as CustomerCardSkeleton } from './CustomerCardSkeleton-HHHLikpL.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
import './gray-wOBznZcb.mjs';
|
||||
import './media-CiMHc-Ka.mjs';
|
||||
import './usePrice-CFcNV1RQ.mjs';
|
||||
import './BasicActionSheet-BOh-xDh_.mjs';
|
||||
import './BasicButton-7YIRCRg8.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import './index-CQMiaHEh.mjs';
|
||||
import './shallowequal-CJsWvZb3.mjs';
|
||||
import 'lodash-es/uniq.js';
|
||||
import './index-D4HrLPqa.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './index-BTlbWWOl.mjs';
|
||||
import 'lodash-es/isPlainObject.js';
|
||||
import 'resize-observer-polyfill';
|
||||
import './index-DN2Eqyc3.mjs';
|
||||
import 'dom-align';
|
||||
import './Checkbox-BqbMrYFp.mjs';
|
||||
import './asyncData-DVPmuEBB.mjs';
|
||||
import 'perfect-debounce';
|
||||
import './UserProfilePic-CSSFM-Xe.mjs';
|
||||
import './empty_user-DSxcM_ac.mjs';
|
||||
|
||||
const getBrandsList = async (search) => {
|
||||
let queryBuilder = supabase.from("brands").select("*");
|
||||
if (search?.length)
|
||||
queryBuilder.like("title", `%${search}%`);
|
||||
return (await queryBuilder.select("*").order("created_at", { ascending: false })).data;
|
||||
};
|
||||
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
||||
__name: "BrandCard",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
item: {},
|
||||
hasFunction: { type: Boolean, default: true }
|
||||
},
|
||||
emits: ["edit", "delete"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
const config = useConfigStore();
|
||||
const emit = __emit;
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _directive_lazy = resolveDirective("lazy");
|
||||
let _temp0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: ["flex w-full mt-2 p-2 items-center justify-between rounded-lg", unref(config).isNightStore ? "bg-zinc-800" : "bg-gray-50"]
|
||||
}, _attrs))}><div class="flex items-center"><img${ssrRenderAttrs(_temp0 = mergeProps({
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-2.5rem h-2.5rem rounded-lg object-contain"
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(config).useDataStorage(_ctx.item.image), loading: unref(previewImg$1), error: unref(previewImg$1) })))}>${"textContent" in _temp0 ? ssrInterpolate(_temp0.textContent) : _temp0.innerHTML ?? ""}<div class="ms-5 text-sm">${ssrInterpolate(_ctx.item.title)}</div></div>`);
|
||||
if (_ctx.hasFunction) {
|
||||
_push(`<div class="flex items-center gap-2">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:edit",
|
||||
color: "blue",
|
||||
onClick: ($event) => emit("edit", _ctx.item)
|
||||
}, null, _parent));
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:trash",
|
||||
color: "red",
|
||||
onClick: ($event) => emit("delete", _ctx.item.id)
|
||||
}, null, _parent));
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$8 = _sfc_main$8.setup;
|
||||
_sfc_main$8.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/base/pages/user/userMain/brands/components/BrandCard.vue");
|
||||
return _sfc_setup$8 ? _sfc_setup$8(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
||||
__name: "BrandCardSkeleton",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const skeletonRatio = ref(null);
|
||||
const skeletonSize = reactive(
|
||||
useElementSize(skeletonRatio, { width: 0, height: 0 }, { box: "border-box" })
|
||||
);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
ref_key: "skeletonRatio",
|
||||
ref: skeletonRatio,
|
||||
class: "h-fit"
|
||||
}, _attrs))}>`);
|
||||
_push(ssrRenderComponent(unref(ContentLoader), {
|
||||
width: skeletonSize.width,
|
||||
height: "60"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<rect height="50" rx="3" ry="3"${ssrRenderAttr("width", skeletonSize.width)} x="0" y="8"${_scopeId}></rect>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("rect", {
|
||||
height: "50",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: skeletonSize.width,
|
||||
x: "0",
|
||||
y: "8"
|
||||
}, null, 8, ["width"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$7 = _sfc_main$7.setup;
|
||||
_sfc_main$7.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/base/pages/user/userMain/brands/components/BrandCardSkeleton.vue");
|
||||
return _sfc_setup$7 ? _sfc_setup$7(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
||||
__name: "BrandSearchList",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
search: {}
|
||||
},
|
||||
emits: ["selected"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
const props = __props;
|
||||
const emits = __emit;
|
||||
const records = ref([]);
|
||||
async function reload() {
|
||||
loading.value = true;
|
||||
records.value = await getBrandsList(props.search);
|
||||
loading.value = false;
|
||||
}
|
||||
watchDebounced(() => props.search, () => {
|
||||
reload();
|
||||
}, { debounce: 300 });
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(_attrs)}><div class="px-4"><!--[-->`);
|
||||
ssrRenderList(records.value, (item, key) => {
|
||||
_push(ssrRenderComponent(_sfc_main$8, {
|
||||
key,
|
||||
item,
|
||||
"has-function": false,
|
||||
onClick: ($event) => emits("selected", item.id)
|
||||
}, null, _parent));
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
if (unref(loading)) {
|
||||
_push(`<div><!--[-->`);
|
||||
ssrRenderList(10, (i) => {
|
||||
_push(ssrRenderComponent(_sfc_main$7, null, null, _parent));
|
||||
});
|
||||
_push(`<!--]--></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$6 = _sfc_main$6.setup;
|
||||
_sfc_main$6.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/base/pages/search/mainSearch/components/BrandSearchList.vue");
|
||||
return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : void 0;
|
||||
};
|
||||
const previewImg = "" + __buildAssetsURL("logo_preview.B3D6jfxw.png");
|
||||
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
||||
__name: "CategoryCard",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
item: {},
|
||||
hasFunction: { type: Boolean, default: true },
|
||||
showChildren: { type: Boolean, default: false }
|
||||
},
|
||||
emits: ["edit", "delete"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
const config = useConfigStore();
|
||||
const emit = __emit;
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_a_tag = Tag;
|
||||
const _directive_lazy = resolveDirective("lazy");
|
||||
let _temp0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: ["flex w-full mt-2 items-center justify-between", unref(config).isNightStore ? "bg-zinc-800" : "bg-gray-50"]
|
||||
}, _attrs))}><div class="flex items-center"><img${ssrRenderAttrs(_temp0 = mergeProps({
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-2.5rem h-2.5rem rounded-lg object-contain"
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(config).useDataStorage(_ctx.item.image), loading: unref(previewImg), error: unref(previewImg) })))}>${"textContent" in _temp0 ? ssrInterpolate(_temp0.textContent) : _temp0.innerHTML ?? ""}<div><div class="ms-5 text-sm">${ssrInterpolate(_ctx.item.title)}</div>`);
|
||||
if (_ctx.item.children?.length !== 0 && _ctx.showChildren) {
|
||||
_push(`<!--[-->`);
|
||||
ssrRenderList(_ctx.item.children, (val) => {
|
||||
_push(ssrRenderComponent(_component_a_tag, { color: "blue" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<span${_scopeId}>${ssrInterpolate(val.title)}</span>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("span", null, toDisplayString(val.title), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent));
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
if (_ctx.hasFunction) {
|
||||
_push(`<div class="flex items-center gap-2">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:edit",
|
||||
color: "blue",
|
||||
onClick: ($event) => emit("edit", _ctx.item)
|
||||
}, null, _parent));
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:trash",
|
||||
color: "red",
|
||||
onClick: ($event) => emit("delete", _ctx.item.id)
|
||||
}, null, _parent));
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$5 = _sfc_main$5.setup;
|
||||
_sfc_main$5.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Cards/CategoryCard.vue");
|
||||
return _sfc_setup$5 ? _sfc_setup$5(props, ctx) : void 0;
|
||||
};
|
||||
const CategoryCard = Object.assign(_sfc_main$5, { __name: "CardsCategoryCard" });
|
||||
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
||||
__name: "CategoryCardSkeleton",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const skeletonRatio = ref(null);
|
||||
const skeletonSize = reactive(
|
||||
useElementSize(skeletonRatio, { width: 0, height: 0 }, { box: "border-box" })
|
||||
);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
ref_key: "skeletonRatio",
|
||||
ref: skeletonRatio,
|
||||
class: "h-fit"
|
||||
}, _attrs))}>`);
|
||||
_push(ssrRenderComponent(unref(ContentLoader), {
|
||||
width: skeletonSize.width,
|
||||
height: "60"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<rect height="50" rx="3" ry="3"${ssrRenderAttr("width", skeletonSize.width)} x="0" y="8"${_scopeId}></rect>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("rect", {
|
||||
height: "50",
|
||||
rx: "3",
|
||||
ry: "3",
|
||||
width: skeletonSize.width,
|
||||
x: "0",
|
||||
y: "8"
|
||||
}, null, 8, ["width"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$4 = _sfc_main$4.setup;
|
||||
_sfc_main$4.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Cards/CategoryCardSkeleton.vue");
|
||||
return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
|
||||
};
|
||||
const CategoryCardSkeleton = Object.assign(_sfc_main$4, { __name: "CardsCategoryCardSkeleton" });
|
||||
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
||||
__name: "CategorySearchList",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
search: {}
|
||||
},
|
||||
emits: ["selected"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
const config = useConfigStore();
|
||||
const props = __props;
|
||||
const emits = __emit;
|
||||
const records = ref([]);
|
||||
const activeKey = ref();
|
||||
async function reload() {
|
||||
loading.value = true;
|
||||
records.value = await getCategoriesTree(props.search);
|
||||
loading.value = false;
|
||||
}
|
||||
watchDebounced(() => props.search, () => {
|
||||
reload();
|
||||
}, { debounce: 300 });
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_a_collapse = Collapse;
|
||||
const _component_a_collapse_panel = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "pb-20 px-4" }, _attrs))}>`);
|
||||
_push(ssrRenderComponent(_component_a_collapse, {
|
||||
activeKey: activeKey.value,
|
||||
"onUpdate:activeKey": ($event) => activeKey.value = $event,
|
||||
bordered: false,
|
||||
"expand-icon-position": "end",
|
||||
class: "cat_collapse",
|
||||
collapsible: "icon",
|
||||
accordion: ""
|
||||
}, {
|
||||
expandIcon: withCtx(({ isActive }, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<div class="w-20 flex justify-center"${_scopeId}>`);
|
||||
if (unref(config).isRTL) {
|
||||
_push2(ssrRenderComponent(BasicIconOld, {
|
||||
class: "transition-all w-5",
|
||||
icon: "vuesax-linear:arrow-right-1",
|
||||
rotate: isActive ? 90 : 0
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
_push2(ssrRenderComponent(BasicIconOld, {
|
||||
class: "transition-all w-5",
|
||||
icon: "vuesax-linear:arrow-left-1",
|
||||
rotate: isActive ? -90 : 0
|
||||
}, null, _parent2, _scopeId));
|
||||
}
|
||||
_push2(`</div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", { class: "w-20 flex justify-center" }, [
|
||||
unref(config).isRTL ? (openBlock(), createBlock(BasicIconOld, {
|
||||
key: 0,
|
||||
class: "transition-all w-5",
|
||||
icon: "vuesax-linear:arrow-right-1",
|
||||
rotate: isActive ? 90 : 0
|
||||
}, null, 8, ["rotate"])) : (openBlock(), createBlock(BasicIconOld, {
|
||||
key: 1,
|
||||
class: "transition-all w-5",
|
||||
icon: "vuesax-linear:arrow-left-1",
|
||||
rotate: isActive ? -90 : 0
|
||||
}, null, 8, ["rotate"]))
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<!--[-->`);
|
||||
ssrRenderList(records.value, (item, key) => {
|
||||
_push2(ssrRenderComponent(_component_a_collapse_panel, {
|
||||
key: item.id,
|
||||
"show-arrow": item?.children.length != 0
|
||||
}, {
|
||||
header: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<div${_scopeId2}>`);
|
||||
_push3(ssrRenderComponent(CategoryCard, {
|
||||
key,
|
||||
item,
|
||||
hasFunction: false
|
||||
}, null, _parent3, _scopeId2));
|
||||
_push3(`</div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", {
|
||||
onClick: withModifiers(($event) => emits("selected", item.id), ["stop"])
|
||||
}, [
|
||||
(openBlock(), createBlock(CategoryCard, {
|
||||
key,
|
||||
item,
|
||||
hasFunction: false
|
||||
}, null, 8, ["item"]))
|
||||
], 8, ["onClick"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<!--[-->`);
|
||||
ssrRenderList(item.children, (child, key2) => {
|
||||
_push3(`<div class="mx-3"${_scopeId2}>`);
|
||||
_push3(ssrRenderComponent(CategoryCard, {
|
||||
key: key2,
|
||||
item: child,
|
||||
hasFunction: false
|
||||
}, null, _parent3, _scopeId2));
|
||||
_push3(`</div>`);
|
||||
});
|
||||
_push3(`<!--]-->`);
|
||||
} else {
|
||||
return [
|
||||
(openBlock(true), createBlock(Fragment, null, renderList(item.children, (child, key2) => {
|
||||
return openBlock(), createBlock("div", {
|
||||
class: "mx-3",
|
||||
onClick: withModifiers(($event) => emits("selected", child.id), ["stop"])
|
||||
}, [
|
||||
(openBlock(), createBlock(CategoryCard, {
|
||||
key: key2,
|
||||
item: child,
|
||||
hasFunction: false
|
||||
}, null, 8, ["item"]))
|
||||
], 8, ["onClick"]);
|
||||
}), 256))
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent2, _scopeId));
|
||||
});
|
||||
_push2(`<!--]-->`);
|
||||
} else {
|
||||
return [
|
||||
(openBlock(true), createBlock(Fragment, null, renderList(records.value, (item, key) => {
|
||||
return openBlock(), createBlock(_component_a_collapse_panel, {
|
||||
key: item.id,
|
||||
"show-arrow": item?.children.length != 0
|
||||
}, {
|
||||
header: withCtx(() => [
|
||||
createVNode("div", {
|
||||
onClick: withModifiers(($event) => emits("selected", item.id), ["stop"])
|
||||
}, [
|
||||
(openBlock(), createBlock(CategoryCard, {
|
||||
key,
|
||||
item,
|
||||
hasFunction: false
|
||||
}, null, 8, ["item"]))
|
||||
], 8, ["onClick"])
|
||||
]),
|
||||
default: withCtx(() => [
|
||||
(openBlock(true), createBlock(Fragment, null, renderList(item.children, (child, key2) => {
|
||||
return openBlock(), createBlock("div", {
|
||||
class: "mx-3",
|
||||
onClick: withModifiers(($event) => emits("selected", child.id), ["stop"])
|
||||
}, [
|
||||
(openBlock(), createBlock(CategoryCard, {
|
||||
key: key2,
|
||||
item: child,
|
||||
hasFunction: false
|
||||
}, null, 8, ["item"]))
|
||||
], 8, ["onClick"]);
|
||||
}), 256))
|
||||
]),
|
||||
_: 2
|
||||
}, 1032, ["show-arrow"]);
|
||||
}), 128))
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`<div class="px-4">`);
|
||||
if (unref(loading)) {
|
||||
_push(`<div><!--[-->`);
|
||||
ssrRenderList(10, (i) => {
|
||||
_push(ssrRenderComponent(CategoryCardSkeleton, null, null, _parent));
|
||||
});
|
||||
_push(`<!--]--></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$3 = _sfc_main$3.setup;
|
||||
_sfc_main$3.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/base/pages/search/mainSearch/components/CategorySearchList.vue");
|
||||
return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
||||
__name: "CustomerSearchList",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
search: {}
|
||||
},
|
||||
setup(__props) {
|
||||
const router = useRouter$1();
|
||||
const props = __props;
|
||||
const userStore = useUserStore();
|
||||
const loading2 = ref(false);
|
||||
const endPage = ref(false);
|
||||
const currentPage = ref(0);
|
||||
const limit = ref(10);
|
||||
const users = ref([]);
|
||||
const request = async () => {
|
||||
try {
|
||||
if (!endPage.value) {
|
||||
loading2.value = true;
|
||||
const userId = router.currentRoute.value.query?.user_id ?? userStore.user.id;
|
||||
const res = await getCustomerList(userId, ++currentPage.value, limit.value, props.search);
|
||||
if (res?.length <= limit.value) endPage.value = true;
|
||||
users.value.push(...res);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log("e ===>", e);
|
||||
} finally {
|
||||
loading2.value = false;
|
||||
}
|
||||
};
|
||||
const reset = () => {
|
||||
endPage.value = false;
|
||||
users.value = [];
|
||||
currentPage.value = 0;
|
||||
};
|
||||
watchDebounced(() => props.search, () => {
|
||||
reset();
|
||||
request();
|
||||
}, { debounce: 300 });
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "flex flex-col gap-2 mx-4" }, _attrs))}>`);
|
||||
if (!loading2.value) {
|
||||
_push(`<!--[-->`);
|
||||
ssrRenderList(users.value, (user) => {
|
||||
_push(ssrRenderComponent(CustomerCard, { user }, null, _parent));
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<!--[-->`);
|
||||
ssrRenderList(8, (i) => {
|
||||
_push(ssrRenderComponent(CustomerCardSkeleton, null, null, _parent));
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
}
|
||||
_push(`</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("views/base/pages/search/mainSearch/components/CustomerSearchList.vue");
|
||||
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const router = useRouter$1();
|
||||
useConfigStore();
|
||||
const activeKey = ref("products");
|
||||
const searchValue = ref("");
|
||||
function SelectCategory(id) {
|
||||
router.replace({
|
||||
name: "search-main",
|
||||
query: { category: id }
|
||||
// Directly use the value instead of an array
|
||||
});
|
||||
setTimeout(() => {
|
||||
activeKey.value = "products";
|
||||
}, 50);
|
||||
}
|
||||
function selectBrand(id) {
|
||||
router.replace({
|
||||
name: "search-main",
|
||||
query: { brand: id }
|
||||
// Directly use the value instead of an array
|
||||
});
|
||||
setTimeout(() => {
|
||||
activeKey.value = "products";
|
||||
}, 50);
|
||||
}
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "sm:w-70vw sm:justify-self-center" }, _attrs))}>`);
|
||||
_push(ssrRenderComponent(_component_ClientOnly, null, {}, _parent));
|
||||
_push(`<div class="h-85vh overflow-y-auto pb-5vh">`);
|
||||
if (activeKey.value === "products") {
|
||||
_push(ssrRenderComponent(_sfc_main$9, { search: searchValue.value }, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (activeKey.value === "customers") {
|
||||
_push(ssrRenderComponent(_sfc_main$2, { search: searchValue.value }, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (activeKey.value === "categories") {
|
||||
_push(ssrRenderComponent(_sfc_main$3, {
|
||||
search: searchValue.value,
|
||||
onSelected: SelectCategory
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (activeKey.value === "brands") {
|
||||
_push(ssrRenderComponent(_sfc_main$6, {
|
||||
search: searchValue.value,
|
||||
onSelected: selectBrand
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("views/base/pages/search/mainSearch/index.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/search/main/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-2UMFxyr4.mjs';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/edit/product/[id]/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,49 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-D4jWl3Hy.mjs';
|
||||
import { aM as useRoute$1, aZ as useRouteStore } from './server.mjs';
|
||||
import './product-DqXo6FRa.mjs';
|
||||
import 'pinia';
|
||||
import 'lodash-es';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useRoute$1();
|
||||
useRouteStore();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/edit/product/[id]/infProduct/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,235 @@
|
||||
import { defineComponent, ref, mergeProps, unref, withCtx, createTextVNode, toDisplayString, createVNode, openBlock, createBlock, Fragment, renderList, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate, ssrRenderList, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { Swiper, SwiperSlide } from 'swiper/vue';
|
||||
import { EffectCoverflow, Pagination } from 'swiper/modules';
|
||||
import { m as mediaFilesUrl } from './product-DqXo6FRa.mjs';
|
||||
import { B as BasicIconOld } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { a as useConfigStore, u as useRouter$1 } from './server.mjs';
|
||||
import { B as BaseDatePicker, a as BaseDatePickerJalali } from './BaseDatePicker-D3_e-ycp.mjs';
|
||||
import { u as useMediaStore } from './media-Cj7oyS0P.mjs';
|
||||
import { S as Spin } from './index-CO_xVqO1.mjs';
|
||||
import { _ as __nuxt_component_1 } from './FormItem-Uo-Qw9vC.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
visible: { type: Boolean, default: false },
|
||||
isEdit: { type: Boolean, default: false },
|
||||
data: {}
|
||||
},
|
||||
emits: ["update:visible", "update:isEdit", "success"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
const config = useConfigStore();
|
||||
const isVideo = (file) => file.includes(".mp4") || file.includes("video");
|
||||
const router = useRouter$1();
|
||||
const modules = [EffectCoverflow, Pagination];
|
||||
const date = /* @__PURE__ */ new Date();
|
||||
const expire_Time = ref(date);
|
||||
const loading = ref(false);
|
||||
useMediaStore();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_a_spin = Spin;
|
||||
const _component_a_form_item = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "h-screen relative" }, _attrs))}><div class="flex sticky top-0 right-0 left-0 gap-8 items-center justify-between p-4"><div class="flex gap-4">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
class: "cursor-pointer",
|
||||
icon: unref(config).isRTL ? "vuesax-linear:arrow-right" : "vuesax-linear:arrow-left",
|
||||
onClick: ($event) => unref(router).back()
|
||||
}, null, _parent));
|
||||
_push(`<div font-semibold>${ssrInterpolate(unref(config).useString("newStory"))}</div></div><div class="text-primary text-sm cursor-pointer">`);
|
||||
_push(ssrRenderComponent(_component_a_spin, { spinning: loading.value }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("create"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("create")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div></div><div class="swiper-container pt-4rem">`);
|
||||
_push(ssrRenderComponent(unref(Swiper), {
|
||||
effect: "coverflow",
|
||||
grabCursor: true,
|
||||
centeredSlides: true,
|
||||
slidesPerView: "auto",
|
||||
coverflowEffect: {
|
||||
rotate: 50,
|
||||
stretch: -10,
|
||||
depth: 90,
|
||||
modifier: 1,
|
||||
slideShadows: true
|
||||
},
|
||||
pagination: true,
|
||||
modules,
|
||||
class: "mySwiper"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<!--[-->`);
|
||||
ssrRenderList(unref(mediaFilesUrl), (media, index) => {
|
||||
_push2(ssrRenderComponent(unref(SwiperSlide), {
|
||||
key: index,
|
||||
class: "small-slide"
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<div class="media-wrapper"${_scopeId2}>`);
|
||||
if (isVideo(media)) {
|
||||
_push3(`<video${ssrRenderAttr("src", media)} controls class="media video"${_scopeId2}></video>`);
|
||||
} else {
|
||||
_push3(`<img${ssrRenderAttr("src", media)} class="media !object-contain bg-gray-100"${_scopeId2}>`);
|
||||
}
|
||||
_push3(`</div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", { class: "media-wrapper" }, [
|
||||
isVideo(media) ? (openBlock(), createBlock("video", {
|
||||
key: 0,
|
||||
src: media,
|
||||
controls: "",
|
||||
class: "media video"
|
||||
}, null, 8, ["src"])) : (openBlock(), createBlock("img", {
|
||||
key: 1,
|
||||
src: media,
|
||||
class: "media !object-contain bg-gray-100"
|
||||
}, null, 8, ["src"]))
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent2, _scopeId));
|
||||
});
|
||||
_push2(`<!--]-->`);
|
||||
_push2(ssrRenderComponent(unref(SwiperSlide), { class: "small-slide" }, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`<div class="h-full w-full flex justify-center items-center"${_scopeId2}><div class="rounded-full bg-gray-50 flex items-center justify-center aspect-square w-16 shadow-lg text-xl text-gray-400"${_scopeId2}><span${_scopeId2}>+</span></div></div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", { class: "h-full w-full flex justify-center items-center" }, [
|
||||
createVNode("div", {
|
||||
class: "rounded-full bg-gray-50 flex items-center justify-center aspect-square w-16 shadow-lg text-xl text-gray-400",
|
||||
onClick: ($event) => unref(router).back()
|
||||
}, [
|
||||
createVNode("span", null, "+")
|
||||
], 8, ["onClick"])
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
} else {
|
||||
return [
|
||||
(openBlock(true), createBlock(Fragment, null, renderList(unref(mediaFilesUrl), (media, index) => {
|
||||
return openBlock(), createBlock(unref(SwiperSlide), {
|
||||
key: index,
|
||||
class: "small-slide"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createVNode("div", { class: "media-wrapper" }, [
|
||||
isVideo(media) ? (openBlock(), createBlock("video", {
|
||||
key: 0,
|
||||
src: media,
|
||||
controls: "",
|
||||
class: "media video"
|
||||
}, null, 8, ["src"])) : (openBlock(), createBlock("img", {
|
||||
key: 1,
|
||||
src: media,
|
||||
class: "media !object-contain bg-gray-100"
|
||||
}, null, 8, ["src"]))
|
||||
])
|
||||
]),
|
||||
_: 2
|
||||
}, 1024);
|
||||
}), 128)),
|
||||
createVNode(unref(SwiperSlide), { class: "small-slide" }, {
|
||||
default: withCtx(() => [
|
||||
createVNode("div", { class: "h-full w-full flex justify-center items-center" }, [
|
||||
createVNode("div", {
|
||||
class: "rounded-full bg-gray-50 flex items-center justify-center aspect-square w-16 shadow-lg text-xl text-gray-400",
|
||||
onClick: ($event) => unref(router).back()
|
||||
}, [
|
||||
createVNode("span", null, "+")
|
||||
], 8, ["onClick"])
|
||||
])
|
||||
]),
|
||||
_: 1
|
||||
})
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div><div class="px3 mt5">`);
|
||||
_push(ssrRenderComponent(_component_a_form_item, {
|
||||
label: unref(config).useString("expireTime")
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
if (unref(config).lang === "en" && unref(config).APP_Milady_Date) {
|
||||
_push2(ssrRenderComponent(BaseDatePicker, {
|
||||
value: expire_Time.value,
|
||||
"onUpdate:value": ($event) => expire_Time.value = $event,
|
||||
size: "large",
|
||||
"disabled-date": true,
|
||||
inputReadOnly: "",
|
||||
placeHolder: unref(config).useString("expireTime")
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
_push2(ssrRenderComponent(BaseDatePickerJalali, {
|
||||
value: expire_Time.value,
|
||||
"onUpdate:value": ($event) => expire_Time.value = $event,
|
||||
size: "large",
|
||||
"disabled-date": true,
|
||||
inputReadOnly: "",
|
||||
placeHolder: unref(config).useString("expireTime"),
|
||||
onChange: () => {
|
||||
console.log(expire_Time.value);
|
||||
}
|
||||
}, null, _parent2, _scopeId));
|
||||
}
|
||||
} else {
|
||||
return [
|
||||
unref(config).lang === "en" && unref(config).APP_Milady_Date ? (openBlock(), createBlock(BaseDatePicker, {
|
||||
key: 0,
|
||||
value: expire_Time.value,
|
||||
"onUpdate:value": ($event) => expire_Time.value = $event,
|
||||
size: "large",
|
||||
"disabled-date": true,
|
||||
inputReadOnly: "",
|
||||
placeHolder: unref(config).useString("expireTime")
|
||||
}, null, 8, ["value", "onUpdate:value", "placeHolder"])) : (openBlock(), createBlock(BaseDatePickerJalali, {
|
||||
key: 1,
|
||||
value: expire_Time.value,
|
||||
"onUpdate:value": ($event) => expire_Time.value = $event,
|
||||
size: "large",
|
||||
"disabled-date": true,
|
||||
inputReadOnly: "",
|
||||
placeHolder: unref(config).useString("expireTime"),
|
||||
onChange: () => {
|
||||
console.log(expire_Time.value);
|
||||
}
|
||||
}, null, 8, ["value", "onUpdate:value", "placeHolder", "onChange"]))
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/add/story/information/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as _ };
|
||||
@@ -0,0 +1,890 @@
|
||||
import { B as genComponentStyleHook, T as genCompactItemStyle, A as classNames, C as merge, J as resetComponent, U as clearFix } from './server.mjs';
|
||||
import { nextTick } from 'vue';
|
||||
import _extends from '@babel/runtime/helpers/esm/extends';
|
||||
|
||||
function getStatusClassNames(prefixCls, status, hasFeedback) {
|
||||
return classNames({
|
||||
[`${prefixCls}-status-success`]: status === "success",
|
||||
[`${prefixCls}-status-warning`]: status === "warning",
|
||||
[`${prefixCls}-status-error`]: status === "error",
|
||||
[`${prefixCls}-status-validating`]: status === "validating",
|
||||
[`${prefixCls}-has-feedback`]: hasFeedback
|
||||
});
|
||||
}
|
||||
const getMergedStatus = (contextStatus, customStatus) => customStatus || contextStatus;
|
||||
const genCollapseMotion = (token) => ({
|
||||
[token.componentCls]: {
|
||||
// For common/openAnimation
|
||||
[`${token.antCls}-motion-collapse-legacy`]: {
|
||||
overflow: "hidden",
|
||||
"&-active": {
|
||||
transition: `height ${token.motionDurationMid} ${token.motionEaseInOut},
|
||||
opacity ${token.motionDurationMid} ${token.motionEaseInOut} !important`
|
||||
}
|
||||
},
|
||||
[`${token.antCls}-motion-collapse`]: {
|
||||
overflow: "hidden",
|
||||
transition: `height ${token.motionDurationMid} ${token.motionEaseInOut},
|
||||
opacity ${token.motionDurationMid} ${token.motionEaseInOut} !important`
|
||||
}
|
||||
}
|
||||
});
|
||||
function hasClass(node, className) {
|
||||
if (node.classList) {
|
||||
return node.classList.contains(className);
|
||||
}
|
||||
const originClass = node.className;
|
||||
return ` ${originClass} `.indexOf(` ${className} `) > -1;
|
||||
}
|
||||
function addClass(node, className) {
|
||||
if (node.classList) {
|
||||
node.classList.add(className);
|
||||
} else {
|
||||
if (!hasClass(node, className)) {
|
||||
node.className = `${node.className} ${className}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
function removeClass(node, className) {
|
||||
if (node.classList) {
|
||||
node.classList.remove(className);
|
||||
} else {
|
||||
if (hasClass(node, className)) {
|
||||
const originClass = node.className;
|
||||
node.className = ` ${originClass} `.replace(` ${className} `, " ");
|
||||
}
|
||||
}
|
||||
}
|
||||
const collapseMotion = function() {
|
||||
let name = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "ant-motion-collapse";
|
||||
let appear = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
|
||||
return {
|
||||
name,
|
||||
appear,
|
||||
css: true,
|
||||
onBeforeEnter: (node) => {
|
||||
node.style.height = "0px";
|
||||
node.style.opacity = "0";
|
||||
addClass(node, name);
|
||||
},
|
||||
onEnter: (node) => {
|
||||
nextTick(() => {
|
||||
node.style.height = `${node.scrollHeight}px`;
|
||||
node.style.opacity = "1";
|
||||
});
|
||||
},
|
||||
onAfterEnter: (node) => {
|
||||
if (node) {
|
||||
removeClass(node, name);
|
||||
node.style.height = null;
|
||||
node.style.opacity = null;
|
||||
}
|
||||
},
|
||||
onBeforeLeave: (node) => {
|
||||
addClass(node, name);
|
||||
node.style.height = `${node.offsetHeight}px`;
|
||||
node.style.opacity = null;
|
||||
},
|
||||
onLeave: (node) => {
|
||||
setTimeout(() => {
|
||||
node.style.height = "0px";
|
||||
node.style.opacity = "0";
|
||||
});
|
||||
},
|
||||
onAfterLeave: (node) => {
|
||||
if (node) {
|
||||
removeClass(node, name);
|
||||
if (node.style) {
|
||||
node.style.height = null;
|
||||
node.style.opacity = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const genPlaceholderStyle = (color) => ({
|
||||
// Firefox
|
||||
"&::-moz-placeholder": {
|
||||
opacity: 1
|
||||
},
|
||||
"&::placeholder": {
|
||||
color,
|
||||
userSelect: "none"
|
||||
// https://github.com/ant-design/ant-design/pull/32639
|
||||
},
|
||||
"&:placeholder-shown": {
|
||||
textOverflow: "ellipsis"
|
||||
}
|
||||
});
|
||||
const genHoverStyle = (token) => ({
|
||||
borderColor: token.inputBorderHoverColor,
|
||||
borderInlineEndWidth: token.lineWidth
|
||||
});
|
||||
const genActiveStyle = (token) => ({
|
||||
borderColor: token.inputBorderHoverColor,
|
||||
boxShadow: `0 0 0 ${token.controlOutlineWidth}px ${token.controlOutline}`,
|
||||
borderInlineEndWidth: token.lineWidth,
|
||||
outline: 0
|
||||
});
|
||||
const genDisabledStyle = (token) => ({
|
||||
color: token.colorTextDisabled,
|
||||
backgroundColor: token.colorBgContainerDisabled,
|
||||
borderColor: token.colorBorder,
|
||||
boxShadow: "none",
|
||||
cursor: "not-allowed",
|
||||
opacity: 1,
|
||||
"&:hover": _extends({}, genHoverStyle(merge(token, {
|
||||
inputBorderHoverColor: token.colorBorder
|
||||
})))
|
||||
});
|
||||
const genInputLargeStyle = (token) => {
|
||||
const {
|
||||
inputPaddingVerticalLG,
|
||||
fontSizeLG,
|
||||
lineHeightLG,
|
||||
borderRadiusLG,
|
||||
inputPaddingHorizontalLG
|
||||
} = token;
|
||||
return {
|
||||
padding: `${inputPaddingVerticalLG}px ${inputPaddingHorizontalLG}px`,
|
||||
fontSize: fontSizeLG,
|
||||
lineHeight: lineHeightLG,
|
||||
borderRadius: borderRadiusLG
|
||||
};
|
||||
};
|
||||
const genInputSmallStyle = (token) => ({
|
||||
padding: `${token.inputPaddingVerticalSM}px ${token.controlPaddingHorizontalSM - 1}px`,
|
||||
borderRadius: token.borderRadiusSM
|
||||
});
|
||||
const genStatusStyle = (token, parentCls) => {
|
||||
const {
|
||||
componentCls,
|
||||
colorError,
|
||||
colorWarning,
|
||||
colorErrorOutline,
|
||||
colorWarningOutline,
|
||||
colorErrorBorderHover,
|
||||
colorWarningBorderHover
|
||||
} = token;
|
||||
return {
|
||||
[`&-status-error:not(${parentCls}-disabled):not(${parentCls}-borderless)${parentCls}`]: {
|
||||
borderColor: colorError,
|
||||
"&:hover": {
|
||||
borderColor: colorErrorBorderHover
|
||||
},
|
||||
"&:focus, &-focused": _extends({}, genActiveStyle(merge(token, {
|
||||
inputBorderActiveColor: colorError,
|
||||
inputBorderHoverColor: colorError,
|
||||
controlOutline: colorErrorOutline
|
||||
}))),
|
||||
[`${componentCls}-prefix`]: {
|
||||
color: colorError
|
||||
}
|
||||
},
|
||||
[`&-status-warning:not(${parentCls}-disabled):not(${parentCls}-borderless)${parentCls}`]: {
|
||||
borderColor: colorWarning,
|
||||
"&:hover": {
|
||||
borderColor: colorWarningBorderHover
|
||||
},
|
||||
"&:focus, &-focused": _extends({}, genActiveStyle(merge(token, {
|
||||
inputBorderActiveColor: colorWarning,
|
||||
inputBorderHoverColor: colorWarning,
|
||||
controlOutline: colorWarningOutline
|
||||
}))),
|
||||
[`${componentCls}-prefix`]: {
|
||||
color: colorWarning
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const genBasicInputStyle = (token) => _extends(_extends({
|
||||
position: "relative",
|
||||
display: "inline-block",
|
||||
width: "100%",
|
||||
minWidth: 0,
|
||||
padding: `${token.inputPaddingVertical}px ${token.inputPaddingHorizontal}px`,
|
||||
color: token.colorText,
|
||||
fontSize: token.fontSize,
|
||||
lineHeight: token.lineHeight,
|
||||
backgroundColor: token.colorBgContainer,
|
||||
backgroundImage: "none",
|
||||
borderWidth: token.lineWidth,
|
||||
borderStyle: token.lineType,
|
||||
borderColor: token.colorBorder,
|
||||
borderRadius: token.borderRadius,
|
||||
transition: `all ${token.motionDurationMid}`
|
||||
}, genPlaceholderStyle(token.colorTextPlaceholder)), {
|
||||
"&:hover": _extends({}, genHoverStyle(token)),
|
||||
"&:focus, &-focused": _extends({}, genActiveStyle(token)),
|
||||
"&-disabled, &[disabled]": _extends({}, genDisabledStyle(token)),
|
||||
"&-borderless": {
|
||||
"&, &:hover, &:focus, &-focused, &-disabled, &[disabled]": {
|
||||
backgroundColor: "transparent",
|
||||
border: "none",
|
||||
boxShadow: "none"
|
||||
}
|
||||
},
|
||||
// Reset height for `textarea`s
|
||||
"textarea&": {
|
||||
maxWidth: "100%",
|
||||
height: "auto",
|
||||
minHeight: token.controlHeight,
|
||||
lineHeight: token.lineHeight,
|
||||
verticalAlign: "bottom",
|
||||
transition: `all ${token.motionDurationSlow}, height 0s`,
|
||||
resize: "vertical"
|
||||
},
|
||||
// Size
|
||||
"&-lg": _extends({}, genInputLargeStyle(token)),
|
||||
"&-sm": _extends({}, genInputSmallStyle(token)),
|
||||
// RTL
|
||||
"&-rtl": {
|
||||
direction: "rtl"
|
||||
},
|
||||
"&-textarea-rtl": {
|
||||
direction: "rtl"
|
||||
}
|
||||
});
|
||||
const genInputGroupStyle = (token) => {
|
||||
const {
|
||||
componentCls,
|
||||
antCls
|
||||
} = token;
|
||||
return {
|
||||
position: "relative",
|
||||
display: "table",
|
||||
width: "100%",
|
||||
borderCollapse: "separate",
|
||||
borderSpacing: 0,
|
||||
// Undo padding and float of grid classes
|
||||
[`&[class*='col-']`]: {
|
||||
paddingInlineEnd: token.paddingXS,
|
||||
"&:last-child": {
|
||||
paddingInlineEnd: 0
|
||||
}
|
||||
},
|
||||
// Sizing options
|
||||
[`&-lg ${componentCls}, &-lg > ${componentCls}-group-addon`]: _extends({}, genInputLargeStyle(token)),
|
||||
[`&-sm ${componentCls}, &-sm > ${componentCls}-group-addon`]: _extends({}, genInputSmallStyle(token)),
|
||||
[`> ${componentCls}`]: {
|
||||
display: "table-cell",
|
||||
"&:not(:first-child):not(:last-child)": {
|
||||
borderRadius: 0
|
||||
}
|
||||
},
|
||||
[`${componentCls}-group`]: {
|
||||
[`&-addon, &-wrap`]: {
|
||||
display: "table-cell",
|
||||
width: 1,
|
||||
whiteSpace: "nowrap",
|
||||
verticalAlign: "middle",
|
||||
"&:not(:first-child):not(:last-child)": {
|
||||
borderRadius: 0
|
||||
}
|
||||
},
|
||||
"&-wrap > *": {
|
||||
display: "block !important"
|
||||
},
|
||||
"&-addon": {
|
||||
position: "relative",
|
||||
padding: `0 ${token.inputPaddingHorizontal}px`,
|
||||
color: token.colorText,
|
||||
fontWeight: "normal",
|
||||
fontSize: token.fontSize,
|
||||
textAlign: "center",
|
||||
backgroundColor: token.colorFillAlter,
|
||||
border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,
|
||||
borderRadius: token.borderRadius,
|
||||
transition: `all ${token.motionDurationSlow}`,
|
||||
lineHeight: 1,
|
||||
// Reset Select's style in addon
|
||||
[`${antCls}-select`]: {
|
||||
margin: `-${token.inputPaddingVertical + 1}px -${token.inputPaddingHorizontal}px`,
|
||||
[`&${antCls}-select-single:not(${antCls}-select-customize-input)`]: {
|
||||
[`${antCls}-select-selector`]: {
|
||||
backgroundColor: "inherit",
|
||||
border: `${token.lineWidth}px ${token.lineType} transparent`,
|
||||
boxShadow: "none"
|
||||
}
|
||||
},
|
||||
"&-open, &-focused": {
|
||||
[`${antCls}-select-selector`]: {
|
||||
color: token.colorPrimary
|
||||
}
|
||||
}
|
||||
},
|
||||
// https://github.com/ant-design/ant-design/issues/31333
|
||||
[`${antCls}-cascader-picker`]: {
|
||||
margin: `-9px -${token.inputPaddingHorizontal}px`,
|
||||
backgroundColor: "transparent",
|
||||
[`${antCls}-cascader-input`]: {
|
||||
textAlign: "start",
|
||||
border: 0,
|
||||
boxShadow: "none"
|
||||
}
|
||||
}
|
||||
},
|
||||
"&-addon:first-child": {
|
||||
borderInlineEnd: 0
|
||||
},
|
||||
"&-addon:last-child": {
|
||||
borderInlineStart: 0
|
||||
}
|
||||
},
|
||||
[`${componentCls}`]: {
|
||||
float: "inline-start",
|
||||
width: "100%",
|
||||
marginBottom: 0,
|
||||
textAlign: "inherit",
|
||||
"&:focus": {
|
||||
zIndex: 1,
|
||||
borderInlineEndWidth: 1
|
||||
},
|
||||
"&:hover": {
|
||||
zIndex: 1,
|
||||
borderInlineEndWidth: 1,
|
||||
[`${componentCls}-search-with-button &`]: {
|
||||
zIndex: 0
|
||||
}
|
||||
}
|
||||
},
|
||||
// Reset rounded corners
|
||||
[`> ${componentCls}:first-child, ${componentCls}-group-addon:first-child`]: {
|
||||
borderStartEndRadius: 0,
|
||||
borderEndEndRadius: 0,
|
||||
// Reset Select's style in addon
|
||||
[`${antCls}-select ${antCls}-select-selector`]: {
|
||||
borderStartEndRadius: 0,
|
||||
borderEndEndRadius: 0
|
||||
}
|
||||
},
|
||||
[`> ${componentCls}-affix-wrapper`]: {
|
||||
[`&:not(:first-child) ${componentCls}`]: {
|
||||
borderStartStartRadius: 0,
|
||||
borderEndStartRadius: 0
|
||||
},
|
||||
[`&:not(:last-child) ${componentCls}`]: {
|
||||
borderStartEndRadius: 0,
|
||||
borderEndEndRadius: 0
|
||||
}
|
||||
},
|
||||
[`> ${componentCls}:last-child, ${componentCls}-group-addon:last-child`]: {
|
||||
borderStartStartRadius: 0,
|
||||
borderEndStartRadius: 0,
|
||||
// Reset Select's style in addon
|
||||
[`${antCls}-select ${antCls}-select-selector`]: {
|
||||
borderStartStartRadius: 0,
|
||||
borderEndStartRadius: 0
|
||||
}
|
||||
},
|
||||
[`${componentCls}-affix-wrapper`]: {
|
||||
"&:not(:last-child)": {
|
||||
borderStartEndRadius: 0,
|
||||
borderEndEndRadius: 0,
|
||||
[`${componentCls}-search &`]: {
|
||||
borderStartStartRadius: token.borderRadius,
|
||||
borderEndStartRadius: token.borderRadius
|
||||
}
|
||||
},
|
||||
[`&:not(:first-child), ${componentCls}-search &:not(:first-child)`]: {
|
||||
borderStartStartRadius: 0,
|
||||
borderEndStartRadius: 0
|
||||
}
|
||||
},
|
||||
[`&${componentCls}-group-compact`]: _extends(_extends({
|
||||
display: "block"
|
||||
}, clearFix()), {
|
||||
[`${componentCls}-group-addon, ${componentCls}-group-wrap, > ${componentCls}`]: {
|
||||
"&:not(:first-child):not(:last-child)": {
|
||||
borderInlineEndWidth: token.lineWidth,
|
||||
"&:hover": {
|
||||
zIndex: 1
|
||||
},
|
||||
"&:focus": {
|
||||
zIndex: 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"& > *": {
|
||||
display: "inline-block",
|
||||
float: "none",
|
||||
verticalAlign: "top",
|
||||
borderRadius: 0
|
||||
},
|
||||
[`& > ${componentCls}-affix-wrapper`]: {
|
||||
display: "inline-flex"
|
||||
},
|
||||
[`& > ${antCls}-picker-range`]: {
|
||||
display: "inline-flex"
|
||||
},
|
||||
"& > *:not(:last-child)": {
|
||||
marginInlineEnd: -token.lineWidth,
|
||||
borderInlineEndWidth: token.lineWidth
|
||||
},
|
||||
// Undo float for .ant-input-group .ant-input
|
||||
[`${componentCls}`]: {
|
||||
float: "none"
|
||||
},
|
||||
// reset border for Select, DatePicker, AutoComplete, Cascader, Mention, TimePicker, Input
|
||||
[`& > ${antCls}-select > ${antCls}-select-selector,
|
||||
& > ${antCls}-select-auto-complete ${componentCls},
|
||||
& > ${antCls}-cascader-picker ${componentCls},
|
||||
& > ${componentCls}-group-wrapper ${componentCls}`]: {
|
||||
borderInlineEndWidth: token.lineWidth,
|
||||
borderRadius: 0,
|
||||
"&:hover": {
|
||||
zIndex: 1
|
||||
},
|
||||
"&:focus": {
|
||||
zIndex: 1
|
||||
}
|
||||
},
|
||||
[`& > ${antCls}-select-focused`]: {
|
||||
zIndex: 1
|
||||
},
|
||||
// update z-index for arrow icon
|
||||
[`& > ${antCls}-select > ${antCls}-select-arrow`]: {
|
||||
zIndex: 1
|
||||
// https://github.com/ant-design/ant-design/issues/20371
|
||||
},
|
||||
[`& > *:first-child,
|
||||
& > ${antCls}-select:first-child > ${antCls}-select-selector,
|
||||
& > ${antCls}-select-auto-complete:first-child ${componentCls},
|
||||
& > ${antCls}-cascader-picker:first-child ${componentCls}`]: {
|
||||
borderStartStartRadius: token.borderRadius,
|
||||
borderEndStartRadius: token.borderRadius
|
||||
},
|
||||
[`& > *:last-child,
|
||||
& > ${antCls}-select:last-child > ${antCls}-select-selector,
|
||||
& > ${antCls}-cascader-picker:last-child ${componentCls},
|
||||
& > ${antCls}-cascader-picker-focused:last-child ${componentCls}`]: {
|
||||
borderInlineEndWidth: token.lineWidth,
|
||||
borderStartEndRadius: token.borderRadius,
|
||||
borderEndEndRadius: token.borderRadius
|
||||
},
|
||||
// https://github.com/ant-design/ant-design/issues/12493
|
||||
[`& > ${antCls}-select-auto-complete ${componentCls}`]: {
|
||||
verticalAlign: "top"
|
||||
},
|
||||
[`${componentCls}-group-wrapper + ${componentCls}-group-wrapper`]: {
|
||||
marginInlineStart: -token.lineWidth,
|
||||
[`${componentCls}-affix-wrapper`]: {
|
||||
borderRadius: 0
|
||||
}
|
||||
},
|
||||
[`${componentCls}-group-wrapper:not(:last-child)`]: {
|
||||
[`&${componentCls}-search > ${componentCls}-group`]: {
|
||||
[`& > ${componentCls}-group-addon > ${componentCls}-search-button`]: {
|
||||
borderRadius: 0
|
||||
},
|
||||
[`& > ${componentCls}`]: {
|
||||
borderStartStartRadius: token.borderRadius,
|
||||
borderStartEndRadius: 0,
|
||||
borderEndEndRadius: 0,
|
||||
borderEndStartRadius: token.borderRadius
|
||||
}
|
||||
}
|
||||
}
|
||||
}),
|
||||
[`&&-sm ${antCls}-btn`]: {
|
||||
fontSize: token.fontSizeSM,
|
||||
height: token.controlHeightSM,
|
||||
lineHeight: "normal"
|
||||
},
|
||||
[`&&-lg ${antCls}-btn`]: {
|
||||
fontSize: token.fontSizeLG,
|
||||
height: token.controlHeightLG,
|
||||
lineHeight: "normal"
|
||||
},
|
||||
// Fix https://github.com/ant-design/ant-design/issues/5754
|
||||
[`&&-lg ${antCls}-select-single ${antCls}-select-selector`]: {
|
||||
height: `${token.controlHeightLG}px`,
|
||||
[`${antCls}-select-selection-item, ${antCls}-select-selection-placeholder`]: {
|
||||
// -2 is for the border size & override default
|
||||
lineHeight: `${token.controlHeightLG - 2}px`
|
||||
},
|
||||
[`${antCls}-select-selection-search-input`]: {
|
||||
height: `${token.controlHeightLG}px`
|
||||
}
|
||||
},
|
||||
[`&&-sm ${antCls}-select-single ${antCls}-select-selector`]: {
|
||||
height: `${token.controlHeightSM}px`,
|
||||
[`${antCls}-select-selection-item, ${antCls}-select-selection-placeholder`]: {
|
||||
// -2 is for the border size & override default
|
||||
lineHeight: `${token.controlHeightSM - 2}px`
|
||||
},
|
||||
[`${antCls}-select-selection-search-input`]: {
|
||||
height: `${token.controlHeightSM}px`
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const genInputStyle = (token) => {
|
||||
const {
|
||||
componentCls,
|
||||
controlHeightSM,
|
||||
lineWidth
|
||||
} = token;
|
||||
const FIXED_CHROME_COLOR_HEIGHT = 16;
|
||||
const colorSmallPadding = (controlHeightSM - lineWidth * 2 - FIXED_CHROME_COLOR_HEIGHT) / 2;
|
||||
return {
|
||||
[componentCls]: _extends(_extends(_extends(_extends({}, resetComponent(token)), genBasicInputStyle(token)), genStatusStyle(token, componentCls)), {
|
||||
'&[type="color"]': {
|
||||
height: token.controlHeight,
|
||||
[`&${componentCls}-lg`]: {
|
||||
height: token.controlHeightLG
|
||||
},
|
||||
[`&${componentCls}-sm`]: {
|
||||
height: controlHeightSM,
|
||||
paddingTop: colorSmallPadding,
|
||||
paddingBottom: colorSmallPadding
|
||||
}
|
||||
}
|
||||
})
|
||||
};
|
||||
};
|
||||
const genAllowClearStyle = (token) => {
|
||||
const {
|
||||
componentCls
|
||||
} = token;
|
||||
return {
|
||||
// ========================= Input =========================
|
||||
[`${componentCls}-clear-icon`]: {
|
||||
margin: 0,
|
||||
color: token.colorTextQuaternary,
|
||||
fontSize: token.fontSizeIcon,
|
||||
verticalAlign: -1,
|
||||
// https://github.com/ant-design/ant-design/pull/18151
|
||||
// https://codesandbox.io/s/wizardly-sun-u10br
|
||||
cursor: "pointer",
|
||||
transition: `color ${token.motionDurationSlow}`,
|
||||
"&:hover": {
|
||||
color: token.colorTextTertiary
|
||||
},
|
||||
"&:active": {
|
||||
color: token.colorText
|
||||
},
|
||||
"&-hidden": {
|
||||
visibility: "hidden"
|
||||
},
|
||||
"&-has-suffix": {
|
||||
margin: `0 ${token.inputAffixPadding}px`
|
||||
}
|
||||
},
|
||||
// ======================= TextArea ========================
|
||||
"&-textarea-with-clear-btn": {
|
||||
padding: "0 !important",
|
||||
border: "0 !important",
|
||||
[`${componentCls}-clear-icon`]: {
|
||||
position: "absolute",
|
||||
insetBlockStart: token.paddingXS,
|
||||
insetInlineEnd: token.paddingXS,
|
||||
zIndex: 1
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const genAffixStyle = (token) => {
|
||||
const {
|
||||
componentCls,
|
||||
inputAffixPadding,
|
||||
colorTextDescription,
|
||||
motionDurationSlow,
|
||||
colorIcon,
|
||||
colorIconHover,
|
||||
iconCls
|
||||
} = token;
|
||||
return {
|
||||
[`${componentCls}-affix-wrapper`]: _extends(_extends(_extends(_extends(_extends({}, genBasicInputStyle(token)), {
|
||||
display: "inline-flex",
|
||||
[`&:not(${componentCls}-affix-wrapper-disabled):hover`]: _extends(_extends({}, genHoverStyle(token)), {
|
||||
zIndex: 1,
|
||||
[`${componentCls}-search-with-button &`]: {
|
||||
zIndex: 0
|
||||
}
|
||||
}),
|
||||
"&-focused, &:focus": {
|
||||
zIndex: 1
|
||||
},
|
||||
"&-disabled": {
|
||||
[`${componentCls}[disabled]`]: {
|
||||
background: "transparent"
|
||||
}
|
||||
},
|
||||
[`> input${componentCls}`]: {
|
||||
padding: 0,
|
||||
fontSize: "inherit",
|
||||
border: "none",
|
||||
borderRadius: 0,
|
||||
outline: "none",
|
||||
"&:focus": {
|
||||
boxShadow: "none !important"
|
||||
}
|
||||
},
|
||||
"&::before": {
|
||||
width: 0,
|
||||
visibility: "hidden",
|
||||
content: '"\\a0"'
|
||||
},
|
||||
[`${componentCls}`]: {
|
||||
"&-prefix, &-suffix": {
|
||||
display: "flex",
|
||||
flex: "none",
|
||||
alignItems: "center",
|
||||
"> *:not(:last-child)": {
|
||||
marginInlineEnd: token.paddingXS
|
||||
}
|
||||
},
|
||||
"&-show-count-suffix": {
|
||||
color: colorTextDescription
|
||||
},
|
||||
"&-show-count-has-suffix": {
|
||||
marginInlineEnd: token.paddingXXS
|
||||
},
|
||||
"&-prefix": {
|
||||
marginInlineEnd: inputAffixPadding
|
||||
},
|
||||
"&-suffix": {
|
||||
marginInlineStart: inputAffixPadding
|
||||
}
|
||||
}
|
||||
}), genAllowClearStyle(token)), {
|
||||
// password
|
||||
[`${iconCls}${componentCls}-password-icon`]: {
|
||||
color: colorIcon,
|
||||
cursor: "pointer",
|
||||
transition: `all ${motionDurationSlow}`,
|
||||
"&:hover": {
|
||||
color: colorIconHover
|
||||
}
|
||||
}
|
||||
}), genStatusStyle(token, `${componentCls}-affix-wrapper`))
|
||||
};
|
||||
};
|
||||
const genGroupStyle = (token) => {
|
||||
const {
|
||||
componentCls,
|
||||
colorError,
|
||||
colorSuccess,
|
||||
borderRadiusLG,
|
||||
borderRadiusSM
|
||||
} = token;
|
||||
return {
|
||||
[`${componentCls}-group`]: _extends(_extends(_extends({}, resetComponent(token)), genInputGroupStyle(token)), {
|
||||
"&-rtl": {
|
||||
direction: "rtl"
|
||||
},
|
||||
"&-wrapper": {
|
||||
display: "inline-block",
|
||||
width: "100%",
|
||||
textAlign: "start",
|
||||
verticalAlign: "top",
|
||||
"&-rtl": {
|
||||
direction: "rtl"
|
||||
},
|
||||
// Size
|
||||
"&-lg": {
|
||||
[`${componentCls}-group-addon`]: {
|
||||
borderRadius: borderRadiusLG
|
||||
}
|
||||
},
|
||||
"&-sm": {
|
||||
[`${componentCls}-group-addon`]: {
|
||||
borderRadius: borderRadiusSM
|
||||
}
|
||||
},
|
||||
// Status
|
||||
"&-status-error": {
|
||||
[`${componentCls}-group-addon`]: {
|
||||
color: colorError,
|
||||
borderColor: colorError
|
||||
}
|
||||
},
|
||||
"&-status-warning": {
|
||||
[`${componentCls}-group-addon:last-child`]: {
|
||||
color: colorSuccess,
|
||||
borderColor: colorSuccess
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
};
|
||||
};
|
||||
const genSearchInputStyle = (token) => {
|
||||
const {
|
||||
componentCls,
|
||||
antCls
|
||||
} = token;
|
||||
const searchPrefixCls = `${componentCls}-search`;
|
||||
return {
|
||||
[searchPrefixCls]: {
|
||||
[`${componentCls}`]: {
|
||||
"&:hover, &:focus": {
|
||||
borderColor: token.colorPrimaryHover,
|
||||
[`+ ${componentCls}-group-addon ${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: {
|
||||
borderInlineStartColor: token.colorPrimaryHover
|
||||
}
|
||||
}
|
||||
},
|
||||
[`${componentCls}-affix-wrapper`]: {
|
||||
borderRadius: 0
|
||||
},
|
||||
// fix slight height diff in Firefox:
|
||||
// https://ant.design/components/auto-complete-cn/#components-auto-complete-demo-certain-category
|
||||
[`${componentCls}-lg`]: {
|
||||
lineHeight: token.lineHeightLG - 2e-4
|
||||
},
|
||||
[`> ${componentCls}-group`]: {
|
||||
[`> ${componentCls}-group-addon:last-child`]: {
|
||||
insetInlineStart: -1,
|
||||
padding: 0,
|
||||
border: 0,
|
||||
[`${searchPrefixCls}-button`]: {
|
||||
paddingTop: 0,
|
||||
paddingBottom: 0,
|
||||
borderStartStartRadius: 0,
|
||||
borderStartEndRadius: token.borderRadius,
|
||||
borderEndEndRadius: token.borderRadius,
|
||||
borderEndStartRadius: 0
|
||||
},
|
||||
[`${searchPrefixCls}-button:not(${antCls}-btn-primary)`]: {
|
||||
color: token.colorTextDescription,
|
||||
"&:hover": {
|
||||
color: token.colorPrimaryHover
|
||||
},
|
||||
"&:active": {
|
||||
color: token.colorPrimaryActive
|
||||
},
|
||||
[`&${antCls}-btn-loading::before`]: {
|
||||
insetInlineStart: 0,
|
||||
insetInlineEnd: 0,
|
||||
insetBlockStart: 0,
|
||||
insetBlockEnd: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
[`${searchPrefixCls}-button`]: {
|
||||
height: token.controlHeight,
|
||||
"&:hover, &:focus": {
|
||||
zIndex: 1
|
||||
}
|
||||
},
|
||||
[`&-large ${searchPrefixCls}-button`]: {
|
||||
height: token.controlHeightLG
|
||||
},
|
||||
[`&-small ${searchPrefixCls}-button`]: {
|
||||
height: token.controlHeightSM
|
||||
},
|
||||
"&-rtl": {
|
||||
direction: "rtl"
|
||||
},
|
||||
// ===================== Compact Item Customized Styles =====================
|
||||
[`&${componentCls}-compact-item`]: {
|
||||
[`&:not(${componentCls}-compact-last-item)`]: {
|
||||
[`${componentCls}-group-addon`]: {
|
||||
[`${componentCls}-search-button`]: {
|
||||
marginInlineEnd: -token.lineWidth,
|
||||
borderRadius: 0
|
||||
}
|
||||
}
|
||||
},
|
||||
[`&:not(${componentCls}-compact-first-item)`]: {
|
||||
[`${componentCls},${componentCls}-affix-wrapper`]: {
|
||||
borderRadius: 0
|
||||
}
|
||||
},
|
||||
[`> ${componentCls}-group-addon ${componentCls}-search-button,
|
||||
> ${componentCls},
|
||||
${componentCls}-affix-wrapper`]: {
|
||||
"&:hover,&:focus,&:active": {
|
||||
zIndex: 2
|
||||
}
|
||||
},
|
||||
[`> ${componentCls}-affix-wrapper-focused`]: {
|
||||
zIndex: 2
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
function initInputToken(token) {
|
||||
return merge(token, {
|
||||
inputAffixPadding: token.paddingXXS,
|
||||
inputPaddingVertical: Math.max(Math.round((token.controlHeight - token.fontSize * token.lineHeight) / 2 * 10) / 10 - token.lineWidth, 3),
|
||||
inputPaddingVerticalLG: Math.ceil((token.controlHeightLG - token.fontSizeLG * token.lineHeightLG) / 2 * 10) / 10 - token.lineWidth,
|
||||
inputPaddingVerticalSM: Math.max(Math.round((token.controlHeightSM - token.fontSize * token.lineHeight) / 2 * 10) / 10 - token.lineWidth, 0),
|
||||
inputPaddingHorizontal: token.paddingSM - token.lineWidth,
|
||||
inputPaddingHorizontalSM: token.paddingXS - token.lineWidth,
|
||||
inputPaddingHorizontalLG: token.controlPaddingHorizontal - token.lineWidth,
|
||||
inputBorderHoverColor: token.colorPrimaryHover,
|
||||
inputBorderActiveColor: token.colorPrimaryHover
|
||||
});
|
||||
}
|
||||
const genTextAreaStyle = (token) => {
|
||||
const {
|
||||
componentCls,
|
||||
inputPaddingHorizontal,
|
||||
paddingLG
|
||||
} = token;
|
||||
const textareaPrefixCls = `${componentCls}-textarea`;
|
||||
return {
|
||||
[textareaPrefixCls]: {
|
||||
position: "relative",
|
||||
[`${textareaPrefixCls}-suffix`]: {
|
||||
position: "absolute",
|
||||
top: 0,
|
||||
insetInlineEnd: inputPaddingHorizontal,
|
||||
bottom: 0,
|
||||
zIndex: 1,
|
||||
display: "inline-flex",
|
||||
alignItems: "center",
|
||||
margin: "auto"
|
||||
},
|
||||
[`&-status-error,
|
||||
&-status-warning,
|
||||
&-status-success,
|
||||
&-status-validating`]: {
|
||||
[`&${textareaPrefixCls}-has-feedback`]: {
|
||||
[`${componentCls}`]: {
|
||||
paddingInlineEnd: paddingLG
|
||||
}
|
||||
}
|
||||
},
|
||||
"&-show-count": {
|
||||
// https://github.com/ant-design/ant-design/issues/33049
|
||||
[`> ${componentCls}`]: {
|
||||
height: "100%"
|
||||
},
|
||||
"&::after": {
|
||||
color: token.colorTextDescription,
|
||||
whiteSpace: "nowrap",
|
||||
content: "attr(data-count)",
|
||||
pointerEvents: "none",
|
||||
float: "right"
|
||||
}
|
||||
},
|
||||
"&-rtl": {
|
||||
"&::after": {
|
||||
float: "left"
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const useStyle = genComponentStyleHook("Input", (token) => {
|
||||
const inputToken = initInputToken(token);
|
||||
return [
|
||||
genInputStyle(inputToken),
|
||||
genTextAreaStyle(inputToken),
|
||||
genAffixStyle(inputToken),
|
||||
genGroupStyle(inputToken),
|
||||
genSearchInputStyle(inputToken),
|
||||
// =====================================================
|
||||
// == Space Compact ==
|
||||
// =====================================================
|
||||
genCompactItemStyle(inputToken)
|
||||
];
|
||||
});
|
||||
|
||||
export { getStatusClassNames as a, genBasicInputStyle as b, genStatusStyle as c, genPlaceholderStyle as d, genActiveStyle as e, genDisabledStyle as f, getMergedStatus as g, genCollapseMotion as h, initInputToken as i, collapseMotion as j, genHoverStyle as k, useStyle as u };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/add/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,88 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-6F8axFwG.mjs';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
import './PostCardSkeleton-CeuWkTWh.mjs';
|
||||
import './empty_user-DSxcM_ac.mjs';
|
||||
import './useDateTime-iTLoRLEX.mjs';
|
||||
import 'moment';
|
||||
import 'moment-timezone';
|
||||
import 'moment-jalaali';
|
||||
import 'date-fns';
|
||||
import 'date-fns/locale';
|
||||
import 'swiper/vue';
|
||||
import 'swiper/modules';
|
||||
import './post_loading-CMOcYm9B.mjs';
|
||||
import './BasicIconOld-Booq7UXp.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './like-D4L8S2C_.mjs';
|
||||
import './moreOptionProduct-CrrGHZLj.mjs';
|
||||
import './index-zsqPNrGJ.mjs';
|
||||
import '@vueuse/gesture';
|
||||
import '@headlessui/vue';
|
||||
import 'framesync';
|
||||
import 'popmotion';
|
||||
import 'style-value-types';
|
||||
import './UserProfilePic-CSSFM-Xe.mjs';
|
||||
import './BasicButton-7YIRCRg8.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import './index-DN2Eqyc3.mjs';
|
||||
import 'dom-align';
|
||||
import './index-CQMiaHEh.mjs';
|
||||
import './shallowequal-CJsWvZb3.mjs';
|
||||
import 'lodash-es/uniq.js';
|
||||
import './index-D4HrLPqa.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './index-BTlbWWOl.mjs';
|
||||
import 'lodash-es/isPlainObject.js';
|
||||
import 'resize-observer-polyfill';
|
||||
import 'vue-content-loader';
|
||||
import './product-DqXo6FRa.mjs';
|
||||
import './userPostsStore-zgAQCVWR.mjs';
|
||||
import './media-CiMHc-Ka.mjs';
|
||||
import './save-3yOnAiJS.mjs';
|
||||
import './asyncData-DVPmuEBB.mjs';
|
||||
import 'perfect-debounce';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/posts/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,292 @@
|
||||
import { defineComponent, ref, reactive, mergeProps, unref, withCtx, createVNode, createTextVNode, toDisplayString, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrInterpolate, ssrRenderSlot } from 'vue/server-renderer';
|
||||
import { B as BasicIconOld } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { u as useRouter$1, a as useConfigStore, e as loading, f as generateOtp, d as api$1, v as verifyOtp, c as setToken, s as supabase, h as forgetPassword, r as removeToken } from './server.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { B as BasicInput } from './BasicInput-CgQV_gT5.mjs';
|
||||
import { B as BasicButton } from './BasicButton-7YIRCRg8.mjs';
|
||||
import OtpInput from 'vue3-otp-input';
|
||||
import { i as inputRulesNoMessage } from './inputRules-Cr4Uiro2.mjs';
|
||||
import { I as InstaInput } from './InstaInput-Cs7_qhi7.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
import './usePrice-CFcNV1RQ.mjs';
|
||||
import './index-D4HrLPqa.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './index-BTlbWWOl.mjs';
|
||||
import 'lodash-es/isPlainObject.js';
|
||||
import 'resize-observer-polyfill';
|
||||
import './index-DN2Eqyc3.mjs';
|
||||
import 'dom-align';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import './FormItem-Uo-Qw9vC.mjs';
|
||||
import 'lodash-es/cloneDeep.js';
|
||||
import 'async-validator';
|
||||
import 'lodash-es/find.js';
|
||||
|
||||
const _sfc_main$2 = {};
|
||||
function _sfc_ssrRender(_ctx, _push, _parent, _attrs) {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "border-2 border-solid rounded-xl px-2 pt-2 mt-2 inputUser" }, _attrs))}>`);
|
||||
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
||||
_push(`</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("components/InstaUserInput.vue");
|
||||
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
|
||||
};
|
||||
const InstaUserInput = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$2, [["ssrRender", _sfc_ssrRender]]), { __name: "InstaUserInput" });
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const router = useRouter$1();
|
||||
const config = useConfigStore();
|
||||
ref(false);
|
||||
const step = ref("mobile");
|
||||
const form = reactive({
|
||||
mobile: void 0,
|
||||
otp: void 0,
|
||||
password: void 0
|
||||
});
|
||||
async function handleOnComplete(value) {
|
||||
form.otp = value;
|
||||
}
|
||||
async function updatePassword() {
|
||||
if (form.password.length < 6) {
|
||||
api$1.error(config.useString("minPassIs6"));
|
||||
return;
|
||||
}
|
||||
try {
|
||||
loading.value = true;
|
||||
const res = await forgetPassword(form.mobile, form.otp, form.password);
|
||||
removeToken();
|
||||
console.log("res ===>", res);
|
||||
router.push({ name: "auth-login" });
|
||||
} catch (e) {
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
async function verifyCode() {
|
||||
try {
|
||||
loading.value = true;
|
||||
const res = await verifyOtp(form.mobile, form.otp);
|
||||
console.log("res ===>", res);
|
||||
setToken(res.session.access_token);
|
||||
await supabase.auth.setSession(res.session);
|
||||
step.value = "password";
|
||||
} catch (e) {
|
||||
console.log("e ===>", e);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
async function findAccount() {
|
||||
try {
|
||||
loading.value = true;
|
||||
const res = await generateOtp(form.mobile, "forget");
|
||||
if (!res?.user?.id) {
|
||||
api$1.error(config.useString("userNotHaveAccount"));
|
||||
router.push({ name: "auth-login" });
|
||||
return;
|
||||
}
|
||||
step.value = "otp";
|
||||
} catch (e) {
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "p3" }, _attrs))}><div class="flex items-center justify-left">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:arrow-left-1",
|
||||
class: "mb-5 font-semibold cursor-pointer",
|
||||
size: "26",
|
||||
onClick: ($event) => unref(router).back()
|
||||
}, null, _parent));
|
||||
_push(`</div><div class="p2">`);
|
||||
if (step.value === "mobile") {
|
||||
_push(`<div><div class="text-2xl font-bold">${ssrInterpolate(unref(config).useString("findYourAccount"))}</div><div class="mt3">${ssrInterpolate(unref(config).useString("enterYourPhone"))}</div>`);
|
||||
_push(ssrRenderComponent(InstaInput, {
|
||||
class: "mt5",
|
||||
rules: unref(inputRulesNoMessage)(),
|
||||
value: form.mobile,
|
||||
"onUpdate:value": ($event) => form.mobile = $event,
|
||||
label: "phone",
|
||||
name: "mobile"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(BasicInput, {
|
||||
value: form.mobile,
|
||||
"onUpdate:value": ($event) => form.mobile = $event,
|
||||
"place-holder": unref(config).useString("phone")
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
return [
|
||||
createVNode(BasicInput, {
|
||||
value: form.mobile,
|
||||
"onUpdate:value": ($event) => form.mobile = $event,
|
||||
"place-holder": unref(config).useString("phone")
|
||||
}, null, 8, ["value", "onUpdate:value", "place-holder"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(ssrRenderComponent(BasicButton, {
|
||||
block: "",
|
||||
class: "mt-5",
|
||||
type: "primary",
|
||||
onClick: findAccount,
|
||||
size: "large",
|
||||
loading: unref(loading),
|
||||
curve: ""
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("findAccount"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("findAccount")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else if (step.value === "otp") {
|
||||
_push(`<div><div class="text-2xl font-bold">${ssrInterpolate(unref(config).useString("registerOtp"))}</div><div class="mt3">${ssrInterpolate(unref(config).useString("registerOtpDescription", form.mobile))}</div>`);
|
||||
_push(ssrRenderComponent(unref(OtpInput), {
|
||||
style: { "direction": "ltr" },
|
||||
class: "mt-10 justify-center",
|
||||
ref: "otpInput",
|
||||
autocomplete: "one-time-code",
|
||||
"input-classes": "otp-input",
|
||||
separator: "",
|
||||
"num-inputs": 5,
|
||||
"should-auto-focus": true,
|
||||
"is-input-num": true,
|
||||
onOnComplete: handleOnComplete
|
||||
}, null, _parent));
|
||||
_push(ssrRenderComponent(BasicButton, {
|
||||
block: "",
|
||||
class: "mt-5",
|
||||
type: "primary",
|
||||
onClick: verifyCode,
|
||||
size: "large",
|
||||
loading: unref(loading)
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("verifyCode"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("verifyCode")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else if (step.value === "password") {
|
||||
_push(`<div><div class="text-2xl font-bold">${ssrInterpolate(unref(config).useString("createNewPassword"))}</div><div class="mt3">${ssrInterpolate(unref(config).useString("registerPasswordDescription"))}</div>`);
|
||||
_push(ssrRenderComponent(InstaUserInput, { class: "mt5" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<div class="text-gray-6"${_scopeId}>${ssrInterpolate(unref(config).useString("password"))}</div>`);
|
||||
_push2(ssrRenderComponent(BasicInput, {
|
||||
value: form.password,
|
||||
"onUpdate:value": ($event) => form.password = $event,
|
||||
"is-password": "",
|
||||
size: "large"
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", { class: "text-gray-6" }, toDisplayString(unref(config).useString("password")), 1),
|
||||
createVNode(BasicInput, {
|
||||
value: form.password,
|
||||
"onUpdate:value": ($event) => form.password = $event,
|
||||
"is-password": "",
|
||||
size: "large"
|
||||
}, null, 8, ["value", "onUpdate:value"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(ssrRenderComponent(BasicButton, {
|
||||
block: "",
|
||||
class: "mt-5",
|
||||
type: "primary",
|
||||
onClick: updatePassword,
|
||||
size: "large",
|
||||
loading: unref(loading)
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("updatePassword"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("updatePassword")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("views/forget/index.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/auth/forget/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,701 @@
|
||||
import { defineComponent, unref, mergeProps, useSSRContext, computed, ref, watch, createVNode, reactive, shallowRef, toRaw, nextTick } from 'vue';
|
||||
import { ssrRenderAttrs } from 'vue/server-renderer';
|
||||
import { _ as _imports_0 } from './close_light-DbrEdRZI.mjs';
|
||||
import { a as useConfigStore, z as useConfigInject, b9 as useProviderSize, ba as useProviderDisabled, bb as useInjectGlobalForm, A as classNames, Q as initDefaultProps, P as PropTypes, F as functionType, H as booleanType, G as stringType, aF as someType, ao as anyType, a9 as objectType, as as tuple } from './server.mjs';
|
||||
import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import _extends from '@babel/runtime/helpers/esm/extends';
|
||||
import { _ as __nuxt_component_1, d as defaultValidateMessages, a as useStyle, b as useProvideForm, c as cloneByNamePathList, t as toArray$1, g as getNamePath, e as containsNamePath, v as validateRules } from './FormItem-Uo-Qw9vC.mjs';
|
||||
import isEqual from 'lodash-es/isEqual.js';
|
||||
import compute from 'compute-scroll-into-view';
|
||||
import cloneDeep from 'lodash-es/cloneDeep.js';
|
||||
import intersection from 'lodash-es/intersection.js';
|
||||
import debounce from 'lodash-es/debounce.js';
|
||||
import omit from 'lodash-es/omit.js';
|
||||
import { u as useInjectFormItemContext, a as FormItemRest } from './FormItemContext-DTpHAXaY.mjs';
|
||||
|
||||
function isOptionsObject(options) {
|
||||
return options === Object(options) && Object.keys(options).length !== 0;
|
||||
}
|
||||
function defaultBehavior(actions, behavior) {
|
||||
if (behavior === void 0) {
|
||||
behavior = 'auto';
|
||||
}
|
||||
var canSmoothScroll = ('scrollBehavior' in document.body.style);
|
||||
actions.forEach(function (_ref) {
|
||||
var el = _ref.el,
|
||||
top = _ref.top,
|
||||
left = _ref.left;
|
||||
if (el.scroll && canSmoothScroll) {
|
||||
el.scroll({
|
||||
top: top,
|
||||
left: left,
|
||||
behavior: behavior
|
||||
});
|
||||
} else {
|
||||
el.scrollTop = top;
|
||||
el.scrollLeft = left;
|
||||
}
|
||||
});
|
||||
}
|
||||
function getOptions(options) {
|
||||
if (options === false) {
|
||||
return {
|
||||
block: 'end',
|
||||
inline: 'nearest'
|
||||
};
|
||||
}
|
||||
if (isOptionsObject(options)) {
|
||||
return options;
|
||||
}
|
||||
return {
|
||||
block: 'start',
|
||||
inline: 'nearest'
|
||||
};
|
||||
}
|
||||
function scrollIntoView(target, options) {
|
||||
var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);
|
||||
if (isOptionsObject(options) && typeof options.behavior === 'function') {
|
||||
return options.behavior(isTargetAttached ? compute(target, options) : []);
|
||||
}
|
||||
if (!isTargetAttached) {
|
||||
return;
|
||||
}
|
||||
var computeOptions = getOptions(options);
|
||||
return defaultBehavior(compute(target, computeOptions), computeOptions.behavior);
|
||||
}
|
||||
|
||||
const _imports_1 = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3csvg%20version='1.1'%20id='Layer_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20width='122.878px'%20height='122.88px'%20viewBox='0%200%20122.878%20122.88'%20enable-background='new%200%200%20122.878%20122.88'%20xml:space='preserve'%3e%3cg%3e%3cpath%20d='M1.426,8.313c-1.901-1.901-1.901-4.984,0-6.886c1.901-1.902,4.984-1.902,6.886,0l53.127,53.127l53.127-53.127%20c1.901-1.902,4.984-1.902,6.887,0c1.901,1.901,1.901,4.985,0,6.886L68.324,61.439l53.128,53.128c1.901,1.901,1.901,4.984,0,6.886%20c-1.902,1.902-4.985,1.902-6.887,0L61.438,68.326L8.312,121.453c-1.901,1.902-4.984,1.902-6.886,0%20c-1.901-1.901-1.901-4.984,0-6.886l53.127-53.128L1.426,8.313L1.426,8.313z'/%3e%3c/g%3e%3c/svg%3e";
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "close",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const config = useConfigStore();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
if (unref(config).isNightStore) {
|
||||
_push(`<img${ssrRenderAttrs(mergeProps({
|
||||
src: _imports_0,
|
||||
alt: "comment",
|
||||
"cursor-pointer": ""
|
||||
}, _attrs))}>`);
|
||||
} else {
|
||||
_push(`<img${ssrRenderAttrs(mergeProps({
|
||||
src: _imports_1,
|
||||
alt: "comment",
|
||||
"cursor-pointer": ""
|
||||
}, _attrs))}>`);
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("assets/img/icons/close.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
function allPromiseFinish(promiseList) {
|
||||
let hasError = false;
|
||||
let count = promiseList.length;
|
||||
const results = [];
|
||||
if (!promiseList.length) {
|
||||
return Promise.resolve([]);
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
promiseList.forEach((promise, index) => {
|
||||
promise.catch((e) => {
|
||||
hasError = true;
|
||||
return e;
|
||||
}).then((result) => {
|
||||
count -= 1;
|
||||
results[index] = result;
|
||||
if (count > 0) {
|
||||
return;
|
||||
}
|
||||
if (hasError) {
|
||||
reject(results);
|
||||
}
|
||||
resolve(results);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
function isRequired(rules) {
|
||||
let isRequired2 = false;
|
||||
if (rules && rules.length) {
|
||||
rules.every((rule) => {
|
||||
if (rule.required) {
|
||||
isRequired2 = true;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
return isRequired2;
|
||||
}
|
||||
function toArray(value) {
|
||||
if (value === void 0 || value === null) {
|
||||
return [];
|
||||
}
|
||||
return Array.isArray(value) ? value : [value];
|
||||
}
|
||||
function getPropByPath(obj, path, strict) {
|
||||
let tempObj = obj;
|
||||
path = path.replace(/\[(\w+)\]/g, ".$1");
|
||||
path = path.replace(/^\./, "");
|
||||
const keyArr = path.split(".");
|
||||
let i = 0;
|
||||
for (let len = keyArr.length; i < len - 1; ++i) {
|
||||
if (!tempObj && !strict) break;
|
||||
const key = keyArr[i];
|
||||
if (key in tempObj) {
|
||||
tempObj = tempObj[key];
|
||||
} else {
|
||||
if (strict) {
|
||||
throw new Error("please transfer a valid name path to validate!");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return {
|
||||
o: tempObj,
|
||||
k: keyArr[i],
|
||||
v: tempObj ? tempObj[keyArr[i]] : null,
|
||||
isValid: tempObj && keyArr[i] in tempObj
|
||||
};
|
||||
}
|
||||
function useForm(modelRef) {
|
||||
let rulesRef = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ref({});
|
||||
let options = arguments.length > 2 ? arguments[2] : void 0;
|
||||
const initialModel = cloneDeep(unref(modelRef));
|
||||
const validateInfos = reactive({});
|
||||
const rulesKeys = shallowRef([]);
|
||||
const resetFields = (newValues) => {
|
||||
_extends(unref(modelRef), _extends(_extends({}, cloneDeep(initialModel)), newValues));
|
||||
nextTick(() => {
|
||||
Object.keys(validateInfos).forEach((key) => {
|
||||
validateInfos[key] = {
|
||||
autoLink: false,
|
||||
required: isRequired(unref(rulesRef)[key])
|
||||
};
|
||||
});
|
||||
});
|
||||
};
|
||||
const filterRules = function() {
|
||||
let rules = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
|
||||
let trigger = arguments.length > 1 ? arguments[1] : void 0;
|
||||
if (!trigger.length) {
|
||||
return rules;
|
||||
} else {
|
||||
return rules.filter((rule) => {
|
||||
const triggerList = toArray(rule.trigger || "change");
|
||||
return intersection(triggerList, trigger).length;
|
||||
});
|
||||
}
|
||||
};
|
||||
let lastValidatePromise = null;
|
||||
const validateFields = function(names) {
|
||||
let option = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
||||
let strict = arguments.length > 2 ? arguments[2] : void 0;
|
||||
const promiseList = [];
|
||||
const values = {};
|
||||
for (let i = 0; i < names.length; i++) {
|
||||
const name = names[i];
|
||||
const prop = getPropByPath(unref(modelRef), name, strict);
|
||||
if (!prop.isValid) continue;
|
||||
values[name] = prop.v;
|
||||
const rules = filterRules(unref(rulesRef)[name], toArray(option && option.trigger));
|
||||
if (rules.length) {
|
||||
promiseList.push(validateField(name, prop.v, rules, option || {}).then(() => ({
|
||||
name,
|
||||
errors: [],
|
||||
warnings: []
|
||||
})).catch((ruleErrors) => {
|
||||
const mergedErrors = [];
|
||||
const mergedWarnings = [];
|
||||
ruleErrors.forEach((_ref) => {
|
||||
let {
|
||||
rule: {
|
||||
warningOnly
|
||||
},
|
||||
errors
|
||||
} = _ref;
|
||||
if (warningOnly) {
|
||||
mergedWarnings.push(...errors);
|
||||
} else {
|
||||
mergedErrors.push(...errors);
|
||||
}
|
||||
});
|
||||
if (mergedErrors.length) {
|
||||
return Promise.reject({
|
||||
name,
|
||||
errors: mergedErrors,
|
||||
warnings: mergedWarnings
|
||||
});
|
||||
}
|
||||
return {
|
||||
name,
|
||||
errors: mergedErrors,
|
||||
warnings: mergedWarnings
|
||||
};
|
||||
}));
|
||||
}
|
||||
}
|
||||
const summaryPromise = allPromiseFinish(promiseList);
|
||||
lastValidatePromise = summaryPromise;
|
||||
const returnPromise = summaryPromise.then(() => {
|
||||
if (lastValidatePromise === summaryPromise) {
|
||||
return Promise.resolve(values);
|
||||
}
|
||||
return Promise.reject([]);
|
||||
}).catch((results) => {
|
||||
const errorList = results.filter((result) => result && result.errors.length);
|
||||
return Promise.reject({
|
||||
values,
|
||||
errorFields: errorList,
|
||||
outOfDate: lastValidatePromise !== summaryPromise
|
||||
});
|
||||
});
|
||||
returnPromise.catch((e) => e);
|
||||
return returnPromise;
|
||||
};
|
||||
const validateField = function(name, value, rules) {
|
||||
let option = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
|
||||
const promise = validateRules([name], value, rules, _extends({
|
||||
validateMessages: defaultValidateMessages
|
||||
}, option), !!option.validateFirst);
|
||||
if (!validateInfos[name]) {
|
||||
return promise.catch((e) => e);
|
||||
}
|
||||
validateInfos[name].validateStatus = "validating";
|
||||
promise.catch((e) => e).then(function() {
|
||||
let results = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
|
||||
var _a;
|
||||
if (validateInfos[name].validateStatus === "validating") {
|
||||
const res = results.filter((result) => result && result.errors.length);
|
||||
validateInfos[name].validateStatus = res.length ? "error" : "success";
|
||||
validateInfos[name].help = res.length ? res.map((r) => r.errors) : null;
|
||||
(_a = options === null || options === void 0 ? void 0 : options.onValidate) === null || _a === void 0 ? void 0 : _a.call(options, name, !res.length, res.length ? toRaw(validateInfos[name].help[0]) : null);
|
||||
}
|
||||
});
|
||||
return promise;
|
||||
};
|
||||
const validate = (names, option) => {
|
||||
let keys = [];
|
||||
let strict = true;
|
||||
if (!names) {
|
||||
strict = false;
|
||||
keys = rulesKeys.value;
|
||||
} else if (Array.isArray(names)) {
|
||||
keys = names;
|
||||
} else {
|
||||
keys = [names];
|
||||
}
|
||||
const promises = validateFields(keys, option || {}, strict);
|
||||
promises.catch((e) => e);
|
||||
return promises;
|
||||
};
|
||||
const clearValidate = (names) => {
|
||||
let keys = [];
|
||||
if (!names) {
|
||||
keys = rulesKeys.value;
|
||||
} else if (Array.isArray(names)) {
|
||||
keys = names;
|
||||
} else {
|
||||
keys = [names];
|
||||
}
|
||||
keys.forEach((key) => {
|
||||
validateInfos[key] && _extends(validateInfos[key], {
|
||||
validateStatus: "",
|
||||
help: null
|
||||
});
|
||||
});
|
||||
};
|
||||
const mergeValidateInfo = (items) => {
|
||||
const info = {
|
||||
autoLink: false
|
||||
};
|
||||
const help = [];
|
||||
const infos = Array.isArray(items) ? items : [items];
|
||||
for (let i = 0; i < infos.length; i++) {
|
||||
const arg = infos[i];
|
||||
if ((arg === null || arg === void 0 ? void 0 : arg.validateStatus) === "error") {
|
||||
info.validateStatus = "error";
|
||||
arg.help && help.push(arg.help);
|
||||
}
|
||||
info.required = info.required || (arg === null || arg === void 0 ? void 0 : arg.required);
|
||||
}
|
||||
info.help = help;
|
||||
return info;
|
||||
};
|
||||
let oldModel = initialModel;
|
||||
let isFirstTime = true;
|
||||
const modelFn = (model) => {
|
||||
const names = [];
|
||||
rulesKeys.value.forEach((key) => {
|
||||
const prop = getPropByPath(model, key, false);
|
||||
const oldProp = getPropByPath(oldModel, key, false);
|
||||
const isFirstValidation = isFirstTime && (options === null || options === void 0 ? void 0 : options.immediate) && prop.isValid;
|
||||
if (isFirstValidation || !isEqual(prop.v, oldProp.v)) {
|
||||
names.push(key);
|
||||
}
|
||||
});
|
||||
validate(names, {
|
||||
trigger: "change"
|
||||
});
|
||||
isFirstTime = false;
|
||||
oldModel = cloneDeep(toRaw(model));
|
||||
};
|
||||
const debounceOptions = options === null || options === void 0 ? void 0 : options.debounce;
|
||||
let first = true;
|
||||
watch(rulesRef, () => {
|
||||
rulesKeys.value = rulesRef ? Object.keys(unref(rulesRef)) : [];
|
||||
if (!first && options && options.validateOnRuleChange) {
|
||||
validate();
|
||||
}
|
||||
first = false;
|
||||
}, {
|
||||
deep: true,
|
||||
immediate: true
|
||||
});
|
||||
watch(rulesKeys, () => {
|
||||
const newValidateInfos = {};
|
||||
rulesKeys.value.forEach((key) => {
|
||||
newValidateInfos[key] = _extends({}, validateInfos[key], {
|
||||
autoLink: false,
|
||||
required: isRequired(unref(rulesRef)[key])
|
||||
});
|
||||
delete validateInfos[key];
|
||||
});
|
||||
for (const key in validateInfos) {
|
||||
if (Object.prototype.hasOwnProperty.call(validateInfos, key)) {
|
||||
delete validateInfos[key];
|
||||
}
|
||||
}
|
||||
_extends(validateInfos, newValidateInfos);
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
watch(modelRef, debounceOptions && debounceOptions.wait ? debounce(modelFn, debounceOptions.wait, omit(debounceOptions, ["wait"])) : modelFn, {
|
||||
immediate: options && !!options.immediate,
|
||||
deep: true
|
||||
});
|
||||
return {
|
||||
modelRef,
|
||||
rulesRef,
|
||||
initialModel,
|
||||
validateInfos,
|
||||
resetFields,
|
||||
validate,
|
||||
validateField,
|
||||
mergeValidateInfo,
|
||||
clearValidate
|
||||
};
|
||||
}
|
||||
const formProps = () => ({
|
||||
layout: PropTypes.oneOf(tuple("horizontal", "inline", "vertical")),
|
||||
labelCol: objectType(),
|
||||
wrapperCol: objectType(),
|
||||
colon: booleanType(),
|
||||
labelAlign: stringType(),
|
||||
labelWrap: booleanType(),
|
||||
prefixCls: String,
|
||||
requiredMark: someType([String, Boolean]),
|
||||
/** @deprecated Will warning in future branch. Pls use `requiredMark` instead. */
|
||||
hideRequiredMark: booleanType(),
|
||||
model: PropTypes.object,
|
||||
rules: objectType(),
|
||||
validateMessages: objectType(),
|
||||
validateOnRuleChange: booleanType(),
|
||||
// 提交失败自动滚动到第一个错误字段
|
||||
scrollToFirstError: anyType(),
|
||||
onSubmit: functionType(),
|
||||
name: String,
|
||||
validateTrigger: someType([String, Array]),
|
||||
size: stringType(),
|
||||
disabled: booleanType(),
|
||||
onValuesChange: functionType(),
|
||||
onFieldsChange: functionType(),
|
||||
onFinish: functionType(),
|
||||
onFinishFailed: functionType(),
|
||||
onValidate: functionType()
|
||||
});
|
||||
function isEqualName(name1, name2) {
|
||||
return isEqual(toArray$1(name1), toArray$1(name2));
|
||||
}
|
||||
const Form = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "AForm",
|
||||
inheritAttrs: false,
|
||||
props: initDefaultProps(formProps(), {
|
||||
layout: "horizontal",
|
||||
hideRequiredMark: false,
|
||||
colon: true
|
||||
}),
|
||||
Item: __nuxt_component_1,
|
||||
useForm,
|
||||
// emits: ['finishFailed', 'submit', 'finish', 'validate'],
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
emit,
|
||||
slots,
|
||||
expose,
|
||||
attrs
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls,
|
||||
direction,
|
||||
form: contextForm,
|
||||
size,
|
||||
disabled
|
||||
} = useConfigInject("form", props);
|
||||
const requiredMark = computed(() => props.requiredMark === "" || props.requiredMark);
|
||||
const mergedRequiredMark = computed(() => {
|
||||
var _a;
|
||||
if (requiredMark.value !== void 0) {
|
||||
return requiredMark.value;
|
||||
}
|
||||
if (contextForm && ((_a = contextForm.value) === null || _a === void 0 ? void 0 : _a.requiredMark) !== void 0) {
|
||||
return contextForm.value.requiredMark;
|
||||
}
|
||||
if (props.hideRequiredMark) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
useProviderSize(size);
|
||||
useProviderDisabled(disabled);
|
||||
const mergedColon = computed(() => {
|
||||
var _a, _b;
|
||||
return (_a = props.colon) !== null && _a !== void 0 ? _a : (_b = contextForm.value) === null || _b === void 0 ? void 0 : _b.colon;
|
||||
});
|
||||
const {
|
||||
validateMessages: globalValidateMessages
|
||||
} = useInjectGlobalForm();
|
||||
const validateMessages = computed(() => {
|
||||
return _extends(_extends(_extends({}, defaultValidateMessages), globalValidateMessages.value), props.validateMessages);
|
||||
});
|
||||
const [wrapSSR, hashId] = useStyle(prefixCls);
|
||||
const formClassName = computed(() => classNames(prefixCls.value, {
|
||||
[`${prefixCls.value}-${props.layout}`]: true,
|
||||
[`${prefixCls.value}-hide-required-mark`]: mergedRequiredMark.value === false,
|
||||
[`${prefixCls.value}-rtl`]: direction.value === "rtl",
|
||||
[`${prefixCls.value}-${size.value}`]: size.value
|
||||
}, hashId.value));
|
||||
const lastValidatePromise = ref();
|
||||
const fields = {};
|
||||
const addField = (eventKey, field) => {
|
||||
fields[eventKey] = field;
|
||||
};
|
||||
const removeField = (eventKey) => {
|
||||
delete fields[eventKey];
|
||||
};
|
||||
const getFieldsByNameList = (nameList) => {
|
||||
const provideNameList = !!nameList;
|
||||
const namePathList = provideNameList ? toArray$1(nameList).map(getNamePath) : [];
|
||||
if (!provideNameList) {
|
||||
return Object.values(fields);
|
||||
} else {
|
||||
return Object.values(fields).filter((field) => namePathList.findIndex((namePath) => isEqualName(namePath, field.fieldName.value)) > -1);
|
||||
}
|
||||
};
|
||||
const resetFields = (name) => {
|
||||
if (!props.model) {
|
||||
return;
|
||||
}
|
||||
getFieldsByNameList(name).forEach((field) => {
|
||||
field.resetField();
|
||||
});
|
||||
};
|
||||
const clearValidate = (name) => {
|
||||
getFieldsByNameList(name).forEach((field) => {
|
||||
field.clearValidate();
|
||||
});
|
||||
};
|
||||
const handleFinishFailed = (errorInfo) => {
|
||||
const {
|
||||
scrollToFirstError
|
||||
} = props;
|
||||
emit("finishFailed", errorInfo);
|
||||
if (scrollToFirstError && errorInfo.errorFields.length) {
|
||||
let scrollToFieldOptions = {};
|
||||
if (typeof scrollToFirstError === "object") {
|
||||
scrollToFieldOptions = scrollToFirstError;
|
||||
}
|
||||
scrollToField(errorInfo.errorFields[0].name, scrollToFieldOptions);
|
||||
}
|
||||
};
|
||||
const validate = function() {
|
||||
return validateField(...arguments);
|
||||
};
|
||||
const scrollToField = function(name) {
|
||||
let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
||||
const fields2 = getFieldsByNameList(name ? [name] : void 0);
|
||||
if (fields2.length) {
|
||||
const fieldId = fields2[0].fieldId.value;
|
||||
const node = fieldId ? (void 0).getElementById(fieldId) : null;
|
||||
if (node) {
|
||||
scrollIntoView(node, _extends({
|
||||
scrollMode: "if-needed",
|
||||
block: "nearest"
|
||||
}, options));
|
||||
}
|
||||
}
|
||||
};
|
||||
const getFieldsValue = function() {
|
||||
let nameList = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
|
||||
if (nameList === true) {
|
||||
const allNameList = [];
|
||||
Object.values(fields).forEach((_ref2) => {
|
||||
let {
|
||||
namePath
|
||||
} = _ref2;
|
||||
allNameList.push(namePath.value);
|
||||
});
|
||||
return cloneByNamePathList(props.model, allNameList);
|
||||
} else {
|
||||
return cloneByNamePathList(props.model, nameList);
|
||||
}
|
||||
};
|
||||
const validateFields = (nameList, options) => {
|
||||
if (!props.model) {
|
||||
return Promise.reject("Form `model` is required for validateFields to work.");
|
||||
}
|
||||
const provideNameList = !!nameList;
|
||||
const namePathList = provideNameList ? toArray$1(nameList).map(getNamePath) : [];
|
||||
const promiseList = [];
|
||||
Object.values(fields).forEach((field) => {
|
||||
var _a;
|
||||
if (!provideNameList) {
|
||||
namePathList.push(field.namePath.value);
|
||||
}
|
||||
if (!((_a = field.rules) === null || _a === void 0 ? void 0 : _a.value.length)) {
|
||||
return;
|
||||
}
|
||||
const fieldNamePath = field.namePath.value;
|
||||
if (!provideNameList || containsNamePath(namePathList, fieldNamePath)) {
|
||||
const promise = field.validateRules(_extends({
|
||||
validateMessages: validateMessages.value
|
||||
}, options));
|
||||
promiseList.push(promise.then(() => ({
|
||||
name: fieldNamePath,
|
||||
errors: [],
|
||||
warnings: []
|
||||
})).catch((ruleErrors) => {
|
||||
const mergedErrors = [];
|
||||
const mergedWarnings = [];
|
||||
ruleErrors.forEach((_ref3) => {
|
||||
let {
|
||||
rule: {
|
||||
warningOnly
|
||||
},
|
||||
errors
|
||||
} = _ref3;
|
||||
if (warningOnly) {
|
||||
mergedWarnings.push(...errors);
|
||||
} else {
|
||||
mergedErrors.push(...errors);
|
||||
}
|
||||
});
|
||||
if (mergedErrors.length) {
|
||||
return Promise.reject({
|
||||
name: fieldNamePath,
|
||||
errors: mergedErrors,
|
||||
warnings: mergedWarnings
|
||||
});
|
||||
}
|
||||
return {
|
||||
name: fieldNamePath,
|
||||
errors: mergedErrors,
|
||||
warnings: mergedWarnings
|
||||
};
|
||||
}));
|
||||
}
|
||||
});
|
||||
const summaryPromise = allPromiseFinish(promiseList);
|
||||
lastValidatePromise.value = summaryPromise;
|
||||
const returnPromise = summaryPromise.then(() => {
|
||||
if (lastValidatePromise.value === summaryPromise) {
|
||||
return Promise.resolve(getFieldsValue(namePathList));
|
||||
}
|
||||
return Promise.reject([]);
|
||||
}).catch((results) => {
|
||||
const errorList = results.filter((result) => result && result.errors.length);
|
||||
return Promise.reject({
|
||||
values: getFieldsValue(namePathList),
|
||||
errorFields: errorList,
|
||||
outOfDate: lastValidatePromise.value !== summaryPromise
|
||||
});
|
||||
});
|
||||
returnPromise.catch((e) => e);
|
||||
return returnPromise;
|
||||
};
|
||||
const validateField = function() {
|
||||
return validateFields(...arguments);
|
||||
};
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
emit("submit", e);
|
||||
if (props.model) {
|
||||
const res = validateFields();
|
||||
res.then((values) => {
|
||||
emit("finish", values);
|
||||
}).catch((errors) => {
|
||||
handleFinishFailed(errors);
|
||||
});
|
||||
}
|
||||
};
|
||||
expose({
|
||||
resetFields,
|
||||
clearValidate,
|
||||
validateFields,
|
||||
getFieldsValue,
|
||||
validate,
|
||||
scrollToField
|
||||
});
|
||||
useProvideForm({
|
||||
model: computed(() => props.model),
|
||||
name: computed(() => props.name),
|
||||
labelAlign: computed(() => props.labelAlign),
|
||||
labelCol: computed(() => props.labelCol),
|
||||
labelWrap: computed(() => props.labelWrap),
|
||||
wrapperCol: computed(() => props.wrapperCol),
|
||||
vertical: computed(() => props.layout === "vertical"),
|
||||
colon: mergedColon,
|
||||
requiredMark: mergedRequiredMark,
|
||||
validateTrigger: computed(() => props.validateTrigger),
|
||||
rules: computed(() => props.rules),
|
||||
addField,
|
||||
removeField,
|
||||
onValidate: (name, status, errors) => {
|
||||
emit("validate", name, status, errors);
|
||||
},
|
||||
validateMessages
|
||||
});
|
||||
watch(() => props.rules, () => {
|
||||
if (props.validateOnRuleChange) {
|
||||
validateFields();
|
||||
}
|
||||
});
|
||||
return () => {
|
||||
var _a;
|
||||
return wrapSSR(createVNode("form", _objectSpread(_objectSpread({}, attrs), {}, {
|
||||
"onSubmit": handleSubmit,
|
||||
"class": [formClassName.value, attrs.class]
|
||||
}), [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]));
|
||||
};
|
||||
}
|
||||
});
|
||||
Form.useInjectFormItemContext = useInjectFormItemContext;
|
||||
Form.ItemRest = FormItemRest;
|
||||
Form.install = function(app) {
|
||||
app.component(Form.name, Form);
|
||||
app.component(Form.Item.name, Form.Item);
|
||||
app.component(FormItemRest.name, FormItemRest);
|
||||
return app;
|
||||
};
|
||||
|
||||
export { Form as F, _sfc_main as _ };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-DVGhzw_E.mjs';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/edit/story/[id]/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,345 @@
|
||||
import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import { defineComponent, shallowRef, watch, createVNode, isVNode, cloneVNode } from 'vue';
|
||||
import { debounce } from 'throttle-debounce';
|
||||
import { z as useConfigInject, R as filterEmpty, Q as initDefaultProps, B as genComponentStyleHook, C as merge, S as getPropsSlot, P as PropTypes, J as resetComponent, K as Keyframe } from './server.mjs';
|
||||
import _extends from '@babel/runtime/helpers/esm/extends';
|
||||
|
||||
const antSpinMove = new Keyframe("antSpinMove", {
|
||||
to: {
|
||||
opacity: 1
|
||||
}
|
||||
});
|
||||
const antRotate = new Keyframe("antRotate", {
|
||||
to: {
|
||||
transform: "rotate(405deg)"
|
||||
}
|
||||
});
|
||||
const genSpinStyle = (token) => ({
|
||||
[`${token.componentCls}`]: _extends(_extends({}, resetComponent(token)), {
|
||||
position: "absolute",
|
||||
display: "none",
|
||||
color: token.colorPrimary,
|
||||
textAlign: "center",
|
||||
verticalAlign: "middle",
|
||||
opacity: 0,
|
||||
transition: `transform ${token.motionDurationSlow} ${token.motionEaseInOutCirc}`,
|
||||
"&-spinning": {
|
||||
position: "static",
|
||||
display: "inline-block",
|
||||
opacity: 1
|
||||
},
|
||||
"&-nested-loading": {
|
||||
position: "relative",
|
||||
[`> div > ${token.componentCls}`]: {
|
||||
position: "absolute",
|
||||
top: 0,
|
||||
insetInlineStart: 0,
|
||||
zIndex: 4,
|
||||
display: "block",
|
||||
width: "100%",
|
||||
height: "100%",
|
||||
maxHeight: token.contentHeight,
|
||||
[`${token.componentCls}-dot`]: {
|
||||
position: "absolute",
|
||||
top: "50%",
|
||||
insetInlineStart: "50%",
|
||||
margin: -token.spinDotSize / 2
|
||||
},
|
||||
[`${token.componentCls}-text`]: {
|
||||
position: "absolute",
|
||||
top: "50%",
|
||||
width: "100%",
|
||||
paddingTop: (token.spinDotSize - token.fontSize) / 2 + 2,
|
||||
textShadow: `0 1px 2px ${token.colorBgContainer}`
|
||||
// FIXME: shadow
|
||||
},
|
||||
[`&${token.componentCls}-show-text ${token.componentCls}-dot`]: {
|
||||
marginTop: -(token.spinDotSize / 2) - 10
|
||||
},
|
||||
"&-sm": {
|
||||
[`${token.componentCls}-dot`]: {
|
||||
margin: -token.spinDotSizeSM / 2
|
||||
},
|
||||
[`${token.componentCls}-text`]: {
|
||||
paddingTop: (token.spinDotSizeSM - token.fontSize) / 2 + 2
|
||||
},
|
||||
[`&${token.componentCls}-show-text ${token.componentCls}-dot`]: {
|
||||
marginTop: -(token.spinDotSizeSM / 2) - 10
|
||||
}
|
||||
},
|
||||
"&-lg": {
|
||||
[`${token.componentCls}-dot`]: {
|
||||
margin: -(token.spinDotSizeLG / 2)
|
||||
},
|
||||
[`${token.componentCls}-text`]: {
|
||||
paddingTop: (token.spinDotSizeLG - token.fontSize) / 2 + 2
|
||||
},
|
||||
[`&${token.componentCls}-show-text ${token.componentCls}-dot`]: {
|
||||
marginTop: -(token.spinDotSizeLG / 2) - 10
|
||||
}
|
||||
}
|
||||
},
|
||||
[`${token.componentCls}-container`]: {
|
||||
position: "relative",
|
||||
transition: `opacity ${token.motionDurationSlow}`,
|
||||
"&::after": {
|
||||
position: "absolute",
|
||||
top: 0,
|
||||
insetInlineEnd: 0,
|
||||
bottom: 0,
|
||||
insetInlineStart: 0,
|
||||
zIndex: 10,
|
||||
width: "100%",
|
||||
height: "100%",
|
||||
background: token.colorBgContainer,
|
||||
opacity: 0,
|
||||
transition: `all ${token.motionDurationSlow}`,
|
||||
content: '""',
|
||||
pointerEvents: "none"
|
||||
}
|
||||
},
|
||||
[`${token.componentCls}-blur`]: {
|
||||
clear: "both",
|
||||
opacity: 0.5,
|
||||
userSelect: "none",
|
||||
pointerEvents: "none",
|
||||
[`&::after`]: {
|
||||
opacity: 0.4,
|
||||
pointerEvents: "auto"
|
||||
}
|
||||
}
|
||||
},
|
||||
// tip
|
||||
// ------------------------------
|
||||
[`&-tip`]: {
|
||||
color: token.spinDotDefault
|
||||
},
|
||||
// dots
|
||||
// ------------------------------
|
||||
[`${token.componentCls}-dot`]: {
|
||||
position: "relative",
|
||||
display: "inline-block",
|
||||
fontSize: token.spinDotSize,
|
||||
width: "1em",
|
||||
height: "1em",
|
||||
"&-item": {
|
||||
position: "absolute",
|
||||
display: "block",
|
||||
width: (token.spinDotSize - token.marginXXS / 2) / 2,
|
||||
height: (token.spinDotSize - token.marginXXS / 2) / 2,
|
||||
backgroundColor: token.colorPrimary,
|
||||
borderRadius: "100%",
|
||||
transform: "scale(0.75)",
|
||||
transformOrigin: "50% 50%",
|
||||
opacity: 0.3,
|
||||
animationName: antSpinMove,
|
||||
animationDuration: "1s",
|
||||
animationIterationCount: "infinite",
|
||||
animationTimingFunction: "linear",
|
||||
animationDirection: "alternate",
|
||||
"&:nth-child(1)": {
|
||||
top: 0,
|
||||
insetInlineStart: 0
|
||||
},
|
||||
"&:nth-child(2)": {
|
||||
top: 0,
|
||||
insetInlineEnd: 0,
|
||||
animationDelay: "0.4s"
|
||||
},
|
||||
"&:nth-child(3)": {
|
||||
insetInlineEnd: 0,
|
||||
bottom: 0,
|
||||
animationDelay: "0.8s"
|
||||
},
|
||||
"&:nth-child(4)": {
|
||||
bottom: 0,
|
||||
insetInlineStart: 0,
|
||||
animationDelay: "1.2s"
|
||||
}
|
||||
},
|
||||
"&-spin": {
|
||||
transform: "rotate(45deg)",
|
||||
animationName: antRotate,
|
||||
animationDuration: "1.2s",
|
||||
animationIterationCount: "infinite",
|
||||
animationTimingFunction: "linear"
|
||||
}
|
||||
},
|
||||
// Sizes
|
||||
// ------------------------------
|
||||
// small
|
||||
[`&-sm ${token.componentCls}-dot`]: {
|
||||
fontSize: token.spinDotSizeSM,
|
||||
i: {
|
||||
width: (token.spinDotSizeSM - token.marginXXS / 2) / 2,
|
||||
height: (token.spinDotSizeSM - token.marginXXS / 2) / 2
|
||||
}
|
||||
},
|
||||
// large
|
||||
[`&-lg ${token.componentCls}-dot`]: {
|
||||
fontSize: token.spinDotSizeLG,
|
||||
i: {
|
||||
width: (token.spinDotSizeLG - token.marginXXS) / 2,
|
||||
height: (token.spinDotSizeLG - token.marginXXS) / 2
|
||||
}
|
||||
},
|
||||
[`&${token.componentCls}-show-text ${token.componentCls}-text`]: {
|
||||
display: "block"
|
||||
}
|
||||
})
|
||||
});
|
||||
const useStyle = genComponentStyleHook("Spin", (token) => {
|
||||
const spinToken = merge(token, {
|
||||
spinDotDefault: token.colorTextDescription,
|
||||
spinDotSize: token.controlHeightLG / 2,
|
||||
spinDotSizeSM: token.controlHeightLG * 0.35,
|
||||
spinDotSizeLG: token.controlHeight
|
||||
});
|
||||
return [genSpinStyle(spinToken)];
|
||||
}, {
|
||||
contentHeight: 400
|
||||
});
|
||||
var __rest = function(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
const spinProps = () => ({
|
||||
prefixCls: String,
|
||||
spinning: {
|
||||
type: Boolean,
|
||||
default: void 0
|
||||
},
|
||||
size: String,
|
||||
wrapperClassName: String,
|
||||
tip: PropTypes.any,
|
||||
delay: Number,
|
||||
indicator: PropTypes.any
|
||||
});
|
||||
let defaultIndicator = null;
|
||||
function shouldDelay(spinning, delay) {
|
||||
return !!spinning && !!delay && !isNaN(Number(delay));
|
||||
}
|
||||
function setDefaultIndicator(Content) {
|
||||
const Indicator = Content.indicator;
|
||||
defaultIndicator = typeof Indicator === "function" ? Indicator : () => createVNode(Indicator, null, null);
|
||||
}
|
||||
const Spin = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ASpin",
|
||||
inheritAttrs: false,
|
||||
props: initDefaultProps(spinProps(), {
|
||||
size: "default",
|
||||
spinning: true,
|
||||
wrapperClassName: ""
|
||||
}),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls,
|
||||
size,
|
||||
direction
|
||||
} = useConfigInject("spin", props);
|
||||
const [wrapSSR, hashId] = useStyle(prefixCls);
|
||||
const sSpinning = shallowRef(props.spinning && !shouldDelay(props.spinning, props.delay));
|
||||
let updateSpinning;
|
||||
watch([() => props.spinning, () => props.delay], () => {
|
||||
updateSpinning === null || updateSpinning === void 0 ? void 0 : updateSpinning.cancel();
|
||||
updateSpinning = debounce(props.delay, () => {
|
||||
sSpinning.value = props.spinning;
|
||||
});
|
||||
updateSpinning === null || updateSpinning === void 0 ? void 0 : updateSpinning();
|
||||
}, {
|
||||
immediate: true,
|
||||
flush: "post"
|
||||
});
|
||||
return () => {
|
||||
var _a, _b;
|
||||
const {
|
||||
class: cls
|
||||
} = attrs, divProps = __rest(attrs, ["class"]);
|
||||
const {
|
||||
tip = (_a = slots.tip) === null || _a === void 0 ? void 0 : _a.call(slots)
|
||||
} = props;
|
||||
const children = (_b = slots.default) === null || _b === void 0 ? void 0 : _b.call(slots);
|
||||
const spinClassName = {
|
||||
[hashId.value]: true,
|
||||
[prefixCls.value]: true,
|
||||
[`${prefixCls.value}-sm`]: size.value === "small",
|
||||
[`${prefixCls.value}-lg`]: size.value === "large",
|
||||
[`${prefixCls.value}-spinning`]: sSpinning.value,
|
||||
[`${prefixCls.value}-show-text`]: !!tip,
|
||||
[`${prefixCls.value}-rtl`]: direction.value === "rtl",
|
||||
[cls]: !!cls
|
||||
};
|
||||
function renderIndicator(prefixCls2) {
|
||||
const dotClassName = `${prefixCls2}-dot`;
|
||||
let indicator = getPropsSlot(slots, props, "indicator");
|
||||
if (indicator === null) {
|
||||
return null;
|
||||
}
|
||||
if (Array.isArray(indicator)) {
|
||||
indicator = indicator.length === 1 ? indicator[0] : indicator;
|
||||
}
|
||||
if (isVNode(indicator)) {
|
||||
return cloneVNode(indicator, {
|
||||
class: dotClassName
|
||||
});
|
||||
}
|
||||
if (defaultIndicator && isVNode(defaultIndicator())) {
|
||||
return cloneVNode(defaultIndicator(), {
|
||||
class: dotClassName
|
||||
});
|
||||
}
|
||||
return createVNode("span", {
|
||||
"class": `${dotClassName} ${prefixCls2}-dot-spin`
|
||||
}, [createVNode("i", {
|
||||
"class": `${prefixCls2}-dot-item`
|
||||
}, null), createVNode("i", {
|
||||
"class": `${prefixCls2}-dot-item`
|
||||
}, null), createVNode("i", {
|
||||
"class": `${prefixCls2}-dot-item`
|
||||
}, null), createVNode("i", {
|
||||
"class": `${prefixCls2}-dot-item`
|
||||
}, null)]);
|
||||
}
|
||||
const spinElement = createVNode("div", _objectSpread(_objectSpread({}, divProps), {}, {
|
||||
"class": spinClassName,
|
||||
"aria-live": "polite",
|
||||
"aria-busy": sSpinning.value
|
||||
}), [renderIndicator(prefixCls.value), tip ? createVNode("div", {
|
||||
"class": `${prefixCls.value}-text`
|
||||
}, [tip]) : null]);
|
||||
if (children && filterEmpty(children).length) {
|
||||
const containerClassName = {
|
||||
[`${prefixCls.value}-container`]: true,
|
||||
[`${prefixCls.value}-blur`]: sSpinning.value
|
||||
};
|
||||
return wrapSSR(createVNode("div", {
|
||||
"class": [`${prefixCls.value}-nested-loading`, props.wrapperClassName, hashId.value]
|
||||
}, [sSpinning.value && createVNode("div", {
|
||||
"key": "loading"
|
||||
}, [spinElement]), createVNode("div", {
|
||||
"class": containerClassName,
|
||||
"key": "container"
|
||||
}, [children])]));
|
||||
}
|
||||
return wrapSSR(spinElement);
|
||||
};
|
||||
}
|
||||
});
|
||||
Spin.setDefaultIndicator = setDefaultIndicator;
|
||||
Spin.install = function(app) {
|
||||
app.component(Spin.name, Spin);
|
||||
return app;
|
||||
};
|
||||
|
||||
export { Spin as S };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,933 @@
|
||||
import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import { defineComponent, computed, createVNode, Fragment, ref } from 'vue';
|
||||
import { V as withInstall, z as useConfigInject, Q as initDefaultProps, B as genComponentStyleHook, C as merge, aC as devWarning, aD as CloseCircleFilled, af as CloseOutlined, aE as CheckCircleFilled, G as stringType, aF as someType, a9 as objectType, ao as anyType, H as booleanType, F as functionType, J as resetComponent, K as Keyframe } from './server.mjs';
|
||||
import { C as CheckOutlined } from '../_/CheckOutlined.mjs';
|
||||
import _extends from '@babel/runtime/helpers/esm/extends';
|
||||
import { presetPrimaryColors } from '@ant-design/colors';
|
||||
import { u as useRefs } from './useRefs-BHKrVg4I.mjs';
|
||||
import { _ as __nuxt_component_2$1 } from './index-DN2Eqyc3.mjs';
|
||||
|
||||
const progressStatuses = ["normal", "exception", "active", "success"];
|
||||
const progressProps = () => ({
|
||||
prefixCls: String,
|
||||
type: stringType(),
|
||||
percent: Number,
|
||||
format: functionType(),
|
||||
status: stringType(),
|
||||
showInfo: booleanType(),
|
||||
strokeWidth: Number,
|
||||
strokeLinecap: stringType(),
|
||||
strokeColor: anyType(),
|
||||
trailColor: String,
|
||||
/** @deprecated Use `size` instead */
|
||||
width: Number,
|
||||
success: objectType(),
|
||||
gapDegree: Number,
|
||||
gapPosition: stringType(),
|
||||
size: someType([String, Number, Array]),
|
||||
steps: Number,
|
||||
/** @deprecated Use `success` instead */
|
||||
successPercent: Number,
|
||||
title: String,
|
||||
progressStatus: stringType()
|
||||
});
|
||||
function validProgress(progress) {
|
||||
if (!progress || progress < 0) {
|
||||
return 0;
|
||||
}
|
||||
if (progress > 100) {
|
||||
return 100;
|
||||
}
|
||||
return progress;
|
||||
}
|
||||
function getSuccessPercent(_ref) {
|
||||
let {
|
||||
success,
|
||||
successPercent
|
||||
} = _ref;
|
||||
let percent = successPercent;
|
||||
if (success && "progress" in success) {
|
||||
devWarning(false, "Progress", "`success.progress` is deprecated. Please use `success.percent` instead.");
|
||||
percent = success.progress;
|
||||
}
|
||||
if (success && "percent" in success) {
|
||||
percent = success.percent;
|
||||
}
|
||||
return percent;
|
||||
}
|
||||
function getPercentage(_ref2) {
|
||||
let {
|
||||
percent,
|
||||
success,
|
||||
successPercent
|
||||
} = _ref2;
|
||||
const realSuccessPercent = validProgress(getSuccessPercent({
|
||||
success,
|
||||
successPercent
|
||||
}));
|
||||
return [realSuccessPercent, validProgress(validProgress(percent) - realSuccessPercent)];
|
||||
}
|
||||
function getStrokeColor(_ref3) {
|
||||
let {
|
||||
success = {},
|
||||
strokeColor
|
||||
} = _ref3;
|
||||
const {
|
||||
strokeColor: successColor
|
||||
} = success;
|
||||
return [successColor || presetPrimaryColors.green, strokeColor || null];
|
||||
}
|
||||
const getSize = (size, type, extra) => {
|
||||
var _a, _b, _c, _d;
|
||||
let width = -1;
|
||||
let height = -1;
|
||||
if (type === "step") {
|
||||
const steps = extra.steps;
|
||||
const strokeWidth = extra.strokeWidth;
|
||||
if (typeof size === "string" || typeof size === "undefined") {
|
||||
width = size === "small" ? 2 : 14;
|
||||
height = strokeWidth !== null && strokeWidth !== void 0 ? strokeWidth : 8;
|
||||
} else if (typeof size === "number") {
|
||||
[width, height] = [size, size];
|
||||
} else {
|
||||
[width = 14, height = 8] = size;
|
||||
}
|
||||
width *= steps;
|
||||
} else if (type === "line") {
|
||||
const strokeWidth = extra === null || extra === void 0 ? void 0 : extra.strokeWidth;
|
||||
if (typeof size === "string" || typeof size === "undefined") {
|
||||
height = strokeWidth || (size === "small" ? 6 : 8);
|
||||
} else if (typeof size === "number") {
|
||||
[width, height] = [size, size];
|
||||
} else {
|
||||
[width = -1, height = 8] = size;
|
||||
}
|
||||
} else if (type === "circle" || type === "dashboard") {
|
||||
if (typeof size === "string" || typeof size === "undefined") {
|
||||
[width, height] = size === "small" ? [60, 60] : [120, 120];
|
||||
} else if (typeof size === "number") {
|
||||
[width, height] = [size, size];
|
||||
} else {
|
||||
width = (_b = (_a = size[0]) !== null && _a !== void 0 ? _a : size[1]) !== null && _b !== void 0 ? _b : 120;
|
||||
height = (_d = (_c = size[0]) !== null && _c !== void 0 ? _c : size[1]) !== null && _d !== void 0 ? _d : 120;
|
||||
}
|
||||
}
|
||||
return {
|
||||
width,
|
||||
height
|
||||
};
|
||||
};
|
||||
var __rest$2 = function(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
const lineProps = () => _extends(_extends({}, progressProps()), {
|
||||
strokeColor: anyType(),
|
||||
direction: stringType()
|
||||
});
|
||||
const sortGradient = (gradients) => {
|
||||
let tempArr = [];
|
||||
Object.keys(gradients).forEach((key) => {
|
||||
const formattedKey = parseFloat(key.replace(/%/g, ""));
|
||||
if (!isNaN(formattedKey)) {
|
||||
tempArr.push({
|
||||
key: formattedKey,
|
||||
value: gradients[key]
|
||||
});
|
||||
}
|
||||
});
|
||||
tempArr = tempArr.sort((a, b) => a.key - b.key);
|
||||
return tempArr.map((_ref) => {
|
||||
let {
|
||||
key,
|
||||
value
|
||||
} = _ref;
|
||||
return `${value} ${key}%`;
|
||||
}).join(", ");
|
||||
};
|
||||
const handleGradient = (strokeColor, directionConfig) => {
|
||||
const {
|
||||
from = presetPrimaryColors.blue,
|
||||
to = presetPrimaryColors.blue,
|
||||
direction = directionConfig === "rtl" ? "to left" : "to right"
|
||||
} = strokeColor, rest = __rest$2(strokeColor, ["from", "to", "direction"]);
|
||||
if (Object.keys(rest).length !== 0) {
|
||||
const sortedGradients = sortGradient(rest);
|
||||
return {
|
||||
backgroundImage: `linear-gradient(${direction}, ${sortedGradients})`
|
||||
};
|
||||
}
|
||||
return {
|
||||
backgroundImage: `linear-gradient(${direction}, ${from}, ${to})`
|
||||
};
|
||||
};
|
||||
const Line = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ProgressLine",
|
||||
inheritAttrs: false,
|
||||
props: lineProps(),
|
||||
setup(props, _ref2) {
|
||||
let {
|
||||
slots,
|
||||
attrs
|
||||
} = _ref2;
|
||||
const backgroundProps = computed(() => {
|
||||
const {
|
||||
strokeColor,
|
||||
direction
|
||||
} = props;
|
||||
return strokeColor && typeof strokeColor !== "string" ? handleGradient(strokeColor, direction) : {
|
||||
backgroundColor: strokeColor
|
||||
};
|
||||
});
|
||||
const borderRadius = computed(() => props.strokeLinecap === "square" || props.strokeLinecap === "butt" ? 0 : void 0);
|
||||
const trailStyle = computed(() => props.trailColor ? {
|
||||
backgroundColor: props.trailColor
|
||||
} : void 0);
|
||||
const mergedSize = computed(() => {
|
||||
var _a;
|
||||
return (_a = props.size) !== null && _a !== void 0 ? _a : [-1, props.strokeWidth || (props.size === "small" ? 6 : 8)];
|
||||
});
|
||||
const sizeRef = computed(() => getSize(mergedSize.value, "line", {
|
||||
strokeWidth: props.strokeWidth
|
||||
}));
|
||||
const percentStyle = computed(() => {
|
||||
const {
|
||||
percent
|
||||
} = props;
|
||||
return _extends({
|
||||
width: `${validProgress(percent)}%`,
|
||||
height: `${sizeRef.value.height}px`,
|
||||
borderRadius: borderRadius.value
|
||||
}, backgroundProps.value);
|
||||
});
|
||||
const successPercent = computed(() => {
|
||||
return getSuccessPercent(props);
|
||||
});
|
||||
const successPercentStyle = computed(() => {
|
||||
const {
|
||||
success
|
||||
} = props;
|
||||
return {
|
||||
width: `${validProgress(successPercent.value)}%`,
|
||||
height: `${sizeRef.value.height}px`,
|
||||
borderRadius: borderRadius.value,
|
||||
backgroundColor: success === null || success === void 0 ? void 0 : success.strokeColor
|
||||
};
|
||||
});
|
||||
const outerStyle = {
|
||||
width: sizeRef.value.width < 0 ? "100%" : sizeRef.value.width,
|
||||
height: `${sizeRef.value.height}px`
|
||||
};
|
||||
return () => {
|
||||
var _a;
|
||||
return createVNode(Fragment, null, [createVNode("div", _objectSpread(_objectSpread({}, attrs), {}, {
|
||||
"class": [`${props.prefixCls}-outer`, attrs.class],
|
||||
"style": [attrs.style, outerStyle]
|
||||
}), [createVNode("div", {
|
||||
"class": `${props.prefixCls}-inner`,
|
||||
"style": trailStyle.value
|
||||
}, [createVNode("div", {
|
||||
"class": `${props.prefixCls}-bg`,
|
||||
"style": percentStyle.value
|
||||
}, null), successPercent.value !== void 0 ? createVNode("div", {
|
||||
"class": `${props.prefixCls}-success-bg`,
|
||||
"style": successPercentStyle.value
|
||||
}, null) : null])]), (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]);
|
||||
};
|
||||
}
|
||||
});
|
||||
const defaultProps = {
|
||||
percent: 0,
|
||||
prefixCls: "vc-progress",
|
||||
strokeColor: "#2db7f5",
|
||||
strokeLinecap: "round",
|
||||
strokeWidth: 1,
|
||||
trailColor: "#D9D9D9",
|
||||
trailWidth: 1
|
||||
};
|
||||
const useTransitionDuration = (paths) => {
|
||||
ref(null);
|
||||
return paths;
|
||||
};
|
||||
const propTypes = {
|
||||
gapDegree: Number,
|
||||
gapPosition: {
|
||||
type: String
|
||||
},
|
||||
percent: {
|
||||
type: [Array, Number]
|
||||
},
|
||||
prefixCls: String,
|
||||
strokeColor: {
|
||||
type: [Object, String, Array]
|
||||
},
|
||||
strokeLinecap: {
|
||||
type: String
|
||||
},
|
||||
strokeWidth: Number,
|
||||
trailColor: String,
|
||||
trailWidth: Number,
|
||||
transition: String
|
||||
};
|
||||
var __rest$1 = function(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
let gradientSeed = 0;
|
||||
function stripPercentToNumber(percent) {
|
||||
return +percent.replace("%", "");
|
||||
}
|
||||
function toArray(value) {
|
||||
return Array.isArray(value) ? value : [value];
|
||||
}
|
||||
function getPathStyles(offset, percent, strokeColor, strokeWidth) {
|
||||
let gapDegree = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : 0;
|
||||
let gapPosition = arguments.length > 5 ? arguments[5] : void 0;
|
||||
const radius = 50 - strokeWidth / 2;
|
||||
let beginPositionX = 0;
|
||||
let beginPositionY = -radius;
|
||||
let endPositionX = 0;
|
||||
let endPositionY = -2 * radius;
|
||||
switch (gapPosition) {
|
||||
case "left":
|
||||
beginPositionX = -radius;
|
||||
beginPositionY = 0;
|
||||
endPositionX = 2 * radius;
|
||||
endPositionY = 0;
|
||||
break;
|
||||
case "right":
|
||||
beginPositionX = radius;
|
||||
beginPositionY = 0;
|
||||
endPositionX = -2 * radius;
|
||||
endPositionY = 0;
|
||||
break;
|
||||
case "bottom":
|
||||
beginPositionY = radius;
|
||||
endPositionY = 2 * radius;
|
||||
break;
|
||||
}
|
||||
const pathString = `M 50,50 m ${beginPositionX},${beginPositionY}
|
||||
a ${radius},${radius} 0 1 1 ${endPositionX},${-endPositionY}
|
||||
a ${radius},${radius} 0 1 1 ${-endPositionX},${endPositionY}`;
|
||||
const len = Math.PI * 2 * radius;
|
||||
const pathStyle = {
|
||||
stroke: strokeColor,
|
||||
strokeDasharray: `${percent / 100 * (len - gapDegree)}px ${len}px`,
|
||||
strokeDashoffset: `-${gapDegree / 2 + offset / 100 * (len - gapDegree)}px`,
|
||||
transition: "stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s"
|
||||
// eslint-disable-line
|
||||
};
|
||||
return {
|
||||
pathString,
|
||||
pathStyle
|
||||
};
|
||||
}
|
||||
const VCCircle = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "VCCircle",
|
||||
props: initDefaultProps(propTypes, defaultProps),
|
||||
setup(props) {
|
||||
gradientSeed += 1;
|
||||
const gradientId = ref(gradientSeed);
|
||||
const percentList = computed(() => toArray(props.percent));
|
||||
const strokeColorList = computed(() => toArray(props.strokeColor));
|
||||
const [setRef, paths] = useRefs();
|
||||
useTransitionDuration(paths);
|
||||
const getStokeList = () => {
|
||||
const {
|
||||
prefixCls,
|
||||
strokeWidth,
|
||||
strokeLinecap,
|
||||
gapDegree,
|
||||
gapPosition
|
||||
} = props;
|
||||
let stackPtg = 0;
|
||||
return percentList.value.map((ptg, index) => {
|
||||
const color = strokeColorList.value[index] || strokeColorList.value[strokeColorList.value.length - 1];
|
||||
const stroke = Object.prototype.toString.call(color) === "[object Object]" ? `url(#${prefixCls}-gradient-${gradientId.value})` : "";
|
||||
const {
|
||||
pathString,
|
||||
pathStyle
|
||||
} = getPathStyles(stackPtg, ptg, color, strokeWidth, gapDegree, gapPosition);
|
||||
stackPtg += ptg;
|
||||
const pathProps = {
|
||||
key: index,
|
||||
d: pathString,
|
||||
stroke,
|
||||
"stroke-linecap": strokeLinecap,
|
||||
"stroke-width": strokeWidth,
|
||||
opacity: ptg === 0 ? 0 : 1,
|
||||
"fill-opacity": "0",
|
||||
class: `${prefixCls}-circle-path`,
|
||||
style: pathStyle
|
||||
};
|
||||
return createVNode("path", _objectSpread({
|
||||
"ref": setRef(index)
|
||||
}, pathProps), null);
|
||||
});
|
||||
};
|
||||
return () => {
|
||||
const {
|
||||
prefixCls,
|
||||
strokeWidth,
|
||||
trailWidth,
|
||||
gapDegree,
|
||||
gapPosition,
|
||||
trailColor,
|
||||
strokeLinecap,
|
||||
strokeColor
|
||||
} = props, restProps = __rest$1(props, ["prefixCls", "strokeWidth", "trailWidth", "gapDegree", "gapPosition", "trailColor", "strokeLinecap", "strokeColor"]);
|
||||
const {
|
||||
pathString,
|
||||
pathStyle
|
||||
} = getPathStyles(0, 100, trailColor, strokeWidth, gapDegree, gapPosition);
|
||||
delete restProps.percent;
|
||||
const gradient = strokeColorList.value.find((color) => Object.prototype.toString.call(color) === "[object Object]");
|
||||
const pathFirst = {
|
||||
d: pathString,
|
||||
stroke: trailColor,
|
||||
"stroke-linecap": strokeLinecap,
|
||||
"stroke-width": trailWidth || strokeWidth,
|
||||
"fill-opacity": "0",
|
||||
class: `${prefixCls}-circle-trail`,
|
||||
style: pathStyle
|
||||
};
|
||||
return createVNode("svg", _objectSpread({
|
||||
"class": `${prefixCls}-circle`,
|
||||
"viewBox": "0 0 100 100"
|
||||
}, restProps), [gradient && createVNode("defs", null, [createVNode("linearGradient", {
|
||||
"id": `${prefixCls}-gradient-${gradientId.value}`,
|
||||
"x1": "100%",
|
||||
"y1": "0%",
|
||||
"x2": "0%",
|
||||
"y2": "0%"
|
||||
}, [Object.keys(gradient).sort((a, b) => stripPercentToNumber(a) - stripPercentToNumber(b)).map((key, index) => createVNode("stop", {
|
||||
"key": index,
|
||||
"offset": key,
|
||||
"stop-color": gradient[key]
|
||||
}, null))])]), createVNode("path", pathFirst, null), getStokeList().reverse()]);
|
||||
};
|
||||
}
|
||||
});
|
||||
const circleProps = () => _extends(_extends({}, progressProps()), {
|
||||
strokeColor: anyType()
|
||||
});
|
||||
const CIRCLE_MIN_STROKE_WIDTH = 3;
|
||||
const getMinPercent = (width) => CIRCLE_MIN_STROKE_WIDTH / width * 100;
|
||||
const Circle = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ProgressCircle",
|
||||
inheritAttrs: false,
|
||||
props: initDefaultProps(circleProps(), {
|
||||
trailColor: null
|
||||
}),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
attrs
|
||||
} = _ref;
|
||||
const originWidth = computed(() => {
|
||||
var _a;
|
||||
return (_a = props.width) !== null && _a !== void 0 ? _a : 120;
|
||||
});
|
||||
const mergedSize = computed(() => {
|
||||
var _a;
|
||||
return (_a = props.size) !== null && _a !== void 0 ? _a : [originWidth.value, originWidth.value];
|
||||
});
|
||||
const sizeRef = computed(() => getSize(mergedSize.value, "circle"));
|
||||
const gapDeg = computed(() => {
|
||||
if (props.gapDegree || props.gapDegree === 0) {
|
||||
return props.gapDegree;
|
||||
}
|
||||
if (props.type === "dashboard") {
|
||||
return 75;
|
||||
}
|
||||
return void 0;
|
||||
});
|
||||
const circleStyle = computed(() => {
|
||||
return {
|
||||
width: `${sizeRef.value.width}px`,
|
||||
height: `${sizeRef.value.height}px`,
|
||||
fontSize: `${sizeRef.value.width * 0.15 + 6}px`
|
||||
};
|
||||
});
|
||||
const circleWidth = computed(() => {
|
||||
var _a;
|
||||
return (_a = props.strokeWidth) !== null && _a !== void 0 ? _a : Math.max(getMinPercent(sizeRef.value.width), 6);
|
||||
});
|
||||
const gapPos = computed(() => props.gapPosition || props.type === "dashboard" && "bottom" || void 0);
|
||||
const percent = computed(() => getPercentage(props));
|
||||
const isGradient = computed(() => Object.prototype.toString.call(props.strokeColor) === "[object Object]");
|
||||
const strokeColor = computed(() => getStrokeColor({
|
||||
success: props.success,
|
||||
strokeColor: props.strokeColor
|
||||
}));
|
||||
const wrapperClassName = computed(() => ({
|
||||
[`${props.prefixCls}-inner`]: true,
|
||||
[`${props.prefixCls}-circle-gradient`]: isGradient.value
|
||||
}));
|
||||
return () => {
|
||||
var _a;
|
||||
const circleContent = createVNode(VCCircle, {
|
||||
"percent": percent.value,
|
||||
"strokeWidth": circleWidth.value,
|
||||
"trailWidth": circleWidth.value,
|
||||
"strokeColor": strokeColor.value,
|
||||
"strokeLinecap": props.strokeLinecap,
|
||||
"trailColor": props.trailColor,
|
||||
"prefixCls": props.prefixCls,
|
||||
"gapDegree": gapDeg.value,
|
||||
"gapPosition": gapPos.value
|
||||
}, null);
|
||||
return createVNode("div", _objectSpread(_objectSpread({}, attrs), {}, {
|
||||
"class": [wrapperClassName.value, attrs.class],
|
||||
"style": [attrs.style, circleStyle.value]
|
||||
}), [sizeRef.value.width <= 20 ? createVNode(__nuxt_component_2$1, null, {
|
||||
default: () => [createVNode("span", null, [circleContent])],
|
||||
title: slots.default
|
||||
}) : createVNode(Fragment, null, [circleContent, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)])]);
|
||||
};
|
||||
}
|
||||
});
|
||||
const stepsProps = () => _extends(_extends({}, progressProps()), {
|
||||
steps: Number,
|
||||
strokeColor: someType(),
|
||||
trailColor: String
|
||||
});
|
||||
const Steps = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "Steps",
|
||||
props: stepsProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const current = computed(() => Math.round(props.steps * ((props.percent || 0) / 100)));
|
||||
const mergedSize = computed(() => {
|
||||
var _a;
|
||||
return (_a = props.size) !== null && _a !== void 0 ? _a : [props.size === "small" ? 2 : 14, props.strokeWidth || 8];
|
||||
});
|
||||
const sizeRef = computed(() => getSize(mergedSize.value, "step", {
|
||||
steps: props.steps,
|
||||
strokeWidth: props.strokeWidth || 8
|
||||
}));
|
||||
const styledSteps = computed(() => {
|
||||
const {
|
||||
steps,
|
||||
strokeColor,
|
||||
trailColor,
|
||||
prefixCls
|
||||
} = props;
|
||||
const temp = [];
|
||||
for (let i = 0; i < steps; i += 1) {
|
||||
const color = Array.isArray(strokeColor) ? strokeColor[i] : strokeColor;
|
||||
const cls = {
|
||||
[`${prefixCls}-steps-item`]: true,
|
||||
[`${prefixCls}-steps-item-active`]: i <= current.value - 1
|
||||
};
|
||||
temp.push(createVNode("div", {
|
||||
"key": i,
|
||||
"class": cls,
|
||||
"style": {
|
||||
backgroundColor: i <= current.value - 1 ? color : trailColor,
|
||||
width: `${sizeRef.value.width / steps}px`,
|
||||
height: `${sizeRef.value.height}px`
|
||||
}
|
||||
}, null));
|
||||
}
|
||||
return temp;
|
||||
});
|
||||
return () => {
|
||||
var _a;
|
||||
return createVNode("div", {
|
||||
"class": `${props.prefixCls}-steps-outer`
|
||||
}, [styledSteps.value, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]);
|
||||
};
|
||||
}
|
||||
});
|
||||
const antProgressActive = new Keyframe("antProgressActive", {
|
||||
"0%": {
|
||||
transform: "translateX(-100%) scaleX(0)",
|
||||
opacity: 0.1
|
||||
},
|
||||
"20%": {
|
||||
transform: "translateX(-100%) scaleX(0)",
|
||||
opacity: 0.5
|
||||
},
|
||||
to: {
|
||||
transform: "translateX(0) scaleX(1)",
|
||||
opacity: 0
|
||||
}
|
||||
});
|
||||
const genBaseStyle = (token) => {
|
||||
const {
|
||||
componentCls: progressCls,
|
||||
iconCls: iconPrefixCls
|
||||
} = token;
|
||||
return {
|
||||
[progressCls]: _extends(_extends({}, resetComponent(token)), {
|
||||
display: "inline-block",
|
||||
"&-rtl": {
|
||||
direction: "rtl"
|
||||
},
|
||||
"&-line": {
|
||||
position: "relative",
|
||||
width: "100%",
|
||||
fontSize: token.fontSize,
|
||||
marginInlineEnd: token.marginXS,
|
||||
marginBottom: token.marginXS
|
||||
},
|
||||
[`${progressCls}-outer`]: {
|
||||
display: "inline-block",
|
||||
width: "100%"
|
||||
},
|
||||
[`&${progressCls}-show-info`]: {
|
||||
[`${progressCls}-outer`]: {
|
||||
marginInlineEnd: `calc(-2em - ${token.marginXS}px)`,
|
||||
paddingInlineEnd: `calc(2em + ${token.paddingXS}px)`
|
||||
}
|
||||
},
|
||||
[`${progressCls}-inner`]: {
|
||||
position: "relative",
|
||||
display: "inline-block",
|
||||
width: "100%",
|
||||
overflow: "hidden",
|
||||
verticalAlign: "middle",
|
||||
backgroundColor: token.progressRemainingColor,
|
||||
borderRadius: token.progressLineRadius
|
||||
},
|
||||
[`${progressCls}-inner:not(${progressCls}-circle-gradient)`]: {
|
||||
[`${progressCls}-circle-path`]: {
|
||||
stroke: token.colorInfo
|
||||
}
|
||||
},
|
||||
[`${progressCls}-success-bg, ${progressCls}-bg`]: {
|
||||
position: "relative",
|
||||
backgroundColor: token.colorInfo,
|
||||
borderRadius: token.progressLineRadius,
|
||||
transition: `all ${token.motionDurationSlow} ${token.motionEaseInOutCirc}`
|
||||
},
|
||||
[`${progressCls}-success-bg`]: {
|
||||
position: "absolute",
|
||||
insetBlockStart: 0,
|
||||
insetInlineStart: 0,
|
||||
backgroundColor: token.colorSuccess
|
||||
},
|
||||
[`${progressCls}-text`]: {
|
||||
display: "inline-block",
|
||||
width: "2em",
|
||||
marginInlineStart: token.marginXS,
|
||||
color: token.progressInfoTextColor,
|
||||
lineHeight: 1,
|
||||
whiteSpace: "nowrap",
|
||||
textAlign: "start",
|
||||
verticalAlign: "middle",
|
||||
wordBreak: "normal",
|
||||
[iconPrefixCls]: {
|
||||
fontSize: token.fontSize
|
||||
}
|
||||
},
|
||||
[`&${progressCls}-status-active`]: {
|
||||
[`${progressCls}-bg::before`]: {
|
||||
position: "absolute",
|
||||
inset: 0,
|
||||
backgroundColor: token.colorBgContainer,
|
||||
borderRadius: token.progressLineRadius,
|
||||
opacity: 0,
|
||||
animationName: antProgressActive,
|
||||
animationDuration: token.progressActiveMotionDuration,
|
||||
animationTimingFunction: token.motionEaseOutQuint,
|
||||
animationIterationCount: "infinite",
|
||||
content: '""'
|
||||
}
|
||||
},
|
||||
[`&${progressCls}-status-exception`]: {
|
||||
[`${progressCls}-bg`]: {
|
||||
backgroundColor: token.colorError
|
||||
},
|
||||
[`${progressCls}-text`]: {
|
||||
color: token.colorError
|
||||
}
|
||||
},
|
||||
[`&${progressCls}-status-exception ${progressCls}-inner:not(${progressCls}-circle-gradient)`]: {
|
||||
[`${progressCls}-circle-path`]: {
|
||||
stroke: token.colorError
|
||||
}
|
||||
},
|
||||
[`&${progressCls}-status-success`]: {
|
||||
[`${progressCls}-bg`]: {
|
||||
backgroundColor: token.colorSuccess
|
||||
},
|
||||
[`${progressCls}-text`]: {
|
||||
color: token.colorSuccess
|
||||
}
|
||||
},
|
||||
[`&${progressCls}-status-success ${progressCls}-inner:not(${progressCls}-circle-gradient)`]: {
|
||||
[`${progressCls}-circle-path`]: {
|
||||
stroke: token.colorSuccess
|
||||
}
|
||||
}
|
||||
})
|
||||
};
|
||||
};
|
||||
const genCircleStyle = (token) => {
|
||||
const {
|
||||
componentCls: progressCls,
|
||||
iconCls: iconPrefixCls
|
||||
} = token;
|
||||
return {
|
||||
[progressCls]: {
|
||||
[`${progressCls}-circle-trail`]: {
|
||||
stroke: token.progressRemainingColor
|
||||
},
|
||||
[`&${progressCls}-circle ${progressCls}-inner`]: {
|
||||
position: "relative",
|
||||
lineHeight: 1,
|
||||
backgroundColor: "transparent"
|
||||
},
|
||||
[`&${progressCls}-circle ${progressCls}-text`]: {
|
||||
position: "absolute",
|
||||
insetBlockStart: "50%",
|
||||
insetInlineStart: 0,
|
||||
width: "100%",
|
||||
margin: 0,
|
||||
padding: 0,
|
||||
color: token.colorText,
|
||||
lineHeight: 1,
|
||||
whiteSpace: "normal",
|
||||
textAlign: "center",
|
||||
transform: "translateY(-50%)",
|
||||
[iconPrefixCls]: {
|
||||
fontSize: `${token.fontSize / token.fontSizeSM}em`
|
||||
}
|
||||
},
|
||||
[`${progressCls}-circle&-status-exception`]: {
|
||||
[`${progressCls}-text`]: {
|
||||
color: token.colorError
|
||||
}
|
||||
},
|
||||
[`${progressCls}-circle&-status-success`]: {
|
||||
[`${progressCls}-text`]: {
|
||||
color: token.colorSuccess
|
||||
}
|
||||
}
|
||||
},
|
||||
[`${progressCls}-inline-circle`]: {
|
||||
lineHeight: 1,
|
||||
[`${progressCls}-inner`]: {
|
||||
verticalAlign: "bottom"
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const genStepStyle = (token) => {
|
||||
const {
|
||||
componentCls: progressCls
|
||||
} = token;
|
||||
return {
|
||||
[progressCls]: {
|
||||
[`${progressCls}-steps`]: {
|
||||
display: "inline-block",
|
||||
"&-outer": {
|
||||
display: "flex",
|
||||
flexDirection: "row",
|
||||
alignItems: "center"
|
||||
},
|
||||
"&-item": {
|
||||
flexShrink: 0,
|
||||
minWidth: token.progressStepMinWidth,
|
||||
marginInlineEnd: token.progressStepMarginInlineEnd,
|
||||
backgroundColor: token.progressRemainingColor,
|
||||
transition: `all ${token.motionDurationSlow}`,
|
||||
"&-active": {
|
||||
backgroundColor: token.colorInfo
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const genSmallLine = (token) => {
|
||||
const {
|
||||
componentCls: progressCls,
|
||||
iconCls: iconPrefixCls
|
||||
} = token;
|
||||
return {
|
||||
[progressCls]: {
|
||||
[`${progressCls}-small&-line, ${progressCls}-small&-line ${progressCls}-text ${iconPrefixCls}`]: {
|
||||
fontSize: token.fontSizeSM
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const useStyle = genComponentStyleHook("Progress", (token) => {
|
||||
const progressStepMarginInlineEnd = token.marginXXS / 2;
|
||||
const progressToken = merge(token, {
|
||||
progressLineRadius: 100,
|
||||
progressInfoTextColor: token.colorText,
|
||||
progressDefaultColor: token.colorInfo,
|
||||
progressRemainingColor: token.colorFillSecondary,
|
||||
progressStepMarginInlineEnd,
|
||||
progressStepMinWidth: progressStepMarginInlineEnd,
|
||||
progressActiveMotionDuration: "2.4s"
|
||||
});
|
||||
return [genBaseStyle(progressToken), genCircleStyle(progressToken), genStepStyle(progressToken), genSmallLine(progressToken)];
|
||||
});
|
||||
var __rest = function(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
const Progress = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "AProgress",
|
||||
inheritAttrs: false,
|
||||
props: initDefaultProps(progressProps(), {
|
||||
type: "line",
|
||||
percent: 0,
|
||||
showInfo: true,
|
||||
// null for different theme definition
|
||||
trailColor: null,
|
||||
size: "default",
|
||||
strokeLinecap: "round"
|
||||
}),
|
||||
slots: Object,
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
attrs
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls,
|
||||
direction
|
||||
} = useConfigInject("progress", props);
|
||||
const [wrapSSR, hashId] = useStyle(prefixCls);
|
||||
const strokeColorNotArray = computed(() => Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor);
|
||||
const percentNumber = computed(() => {
|
||||
const {
|
||||
percent = 0
|
||||
} = props;
|
||||
const successPercent = getSuccessPercent(props);
|
||||
return parseInt(successPercent !== void 0 ? successPercent.toString() : percent.toString(), 10);
|
||||
});
|
||||
const progressStatus = computed(() => {
|
||||
const {
|
||||
status
|
||||
} = props;
|
||||
if (!progressStatuses.includes(status) && percentNumber.value >= 100) {
|
||||
return "success";
|
||||
}
|
||||
return status || "normal";
|
||||
});
|
||||
const classString = computed(() => {
|
||||
const {
|
||||
type,
|
||||
showInfo,
|
||||
size
|
||||
} = props;
|
||||
const pre = prefixCls.value;
|
||||
return {
|
||||
[pre]: true,
|
||||
[`${pre}-inline-circle`]: type === "circle" && getSize(size, "circle").width <= 20,
|
||||
[`${pre}-${type === "dashboard" && "circle" || type}`]: true,
|
||||
[`${pre}-status-${progressStatus.value}`]: true,
|
||||
[`${pre}-show-info`]: showInfo,
|
||||
[`${pre}-${size}`]: size,
|
||||
[`${pre}-rtl`]: direction.value === "rtl",
|
||||
[hashId.value]: true
|
||||
};
|
||||
});
|
||||
const strokeColorNotGradient = computed(() => typeof props.strokeColor === "string" || Array.isArray(props.strokeColor) ? props.strokeColor : void 0);
|
||||
const renderProcessInfo = () => {
|
||||
const {
|
||||
showInfo,
|
||||
format,
|
||||
type,
|
||||
percent,
|
||||
title
|
||||
} = props;
|
||||
const successPercent = getSuccessPercent(props);
|
||||
if (!showInfo) return null;
|
||||
let text;
|
||||
const textFormatter = format || (slots === null || slots === void 0 ? void 0 : slots.format) || ((val) => `${val}%`);
|
||||
const isLineType = type === "line";
|
||||
if (format || (slots === null || slots === void 0 ? void 0 : slots.format) || progressStatus.value !== "exception" && progressStatus.value !== "success") {
|
||||
text = textFormatter(validProgress(percent), validProgress(successPercent));
|
||||
} else if (progressStatus.value === "exception") {
|
||||
text = isLineType ? createVNode(CloseCircleFilled, null, null) : createVNode(CloseOutlined, null, null);
|
||||
} else if (progressStatus.value === "success") {
|
||||
text = isLineType ? createVNode(CheckCircleFilled, null, null) : createVNode(CheckOutlined, null, null);
|
||||
}
|
||||
return createVNode("span", {
|
||||
"class": `${prefixCls.value}-text`,
|
||||
"title": title === void 0 && typeof text === "string" ? text : void 0
|
||||
}, [text]);
|
||||
};
|
||||
return () => {
|
||||
const {
|
||||
type,
|
||||
steps,
|
||||
title
|
||||
} = props;
|
||||
const {
|
||||
class: cls
|
||||
} = attrs, restAttrs = __rest(attrs, ["class"]);
|
||||
const progressInfo = renderProcessInfo();
|
||||
let progress;
|
||||
if (type === "line") {
|
||||
progress = steps ? createVNode(Steps, _objectSpread(_objectSpread({}, props), {}, {
|
||||
"strokeColor": strokeColorNotGradient.value,
|
||||
"prefixCls": prefixCls.value,
|
||||
"steps": steps
|
||||
}), {
|
||||
default: () => [progressInfo]
|
||||
}) : createVNode(Line, _objectSpread(_objectSpread({}, props), {}, {
|
||||
"strokeColor": strokeColorNotArray.value,
|
||||
"prefixCls": prefixCls.value,
|
||||
"direction": direction.value
|
||||
}), {
|
||||
default: () => [progressInfo]
|
||||
});
|
||||
} else if (type === "circle" || type === "dashboard") {
|
||||
progress = createVNode(Circle, _objectSpread(_objectSpread({}, props), {}, {
|
||||
"prefixCls": prefixCls.value,
|
||||
"strokeColor": strokeColorNotArray.value,
|
||||
"progressStatus": progressStatus.value
|
||||
}), {
|
||||
default: () => [progressInfo]
|
||||
});
|
||||
}
|
||||
return wrapSSR(createVNode("div", _objectSpread(_objectSpread({
|
||||
"role": "progressbar"
|
||||
}, restAttrs), {}, {
|
||||
"class": [classString.value, cls],
|
||||
"title": title
|
||||
}), [progress]));
|
||||
};
|
||||
}
|
||||
});
|
||||
const __nuxt_component_2 = withInstall(Progress);
|
||||
|
||||
export { __nuxt_component_2 as _ };
|
||||
@@ -0,0 +1,813 @@
|
||||
import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import _extends from '@babel/runtime/helpers/esm/extends';
|
||||
import { defineComponent, computed, ref, watch, createVNode, Transition, withDirectives, vShow, reactive } from 'vue';
|
||||
import { z as useConfigInject, S as getPropsSlot, ab as flattenChildren, Z as cloneElement, A as classNames, ad as getTransitionProps, B as genComponentStyleHook, C as merge, P as PropTypes, R as filterEmpty, J as resetComponent, K as Keyframe } from './server.mjs';
|
||||
import { i as isPresetColor, g as genPresetColor } from './index-DN2Eqyc3.mjs';
|
||||
import { i as isNumeric } from './isNumeric-BvXfUD6Q.mjs';
|
||||
|
||||
function UnitNumber(_ref) {
|
||||
let {
|
||||
prefixCls,
|
||||
value,
|
||||
current,
|
||||
offset = 0
|
||||
} = _ref;
|
||||
let style;
|
||||
if (offset) {
|
||||
style = {
|
||||
position: "absolute",
|
||||
top: `${offset}00%`,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
return createVNode("p", {
|
||||
"style": style,
|
||||
"class": classNames(`${prefixCls}-only-unit`, {
|
||||
current
|
||||
})
|
||||
}, [value]);
|
||||
}
|
||||
function getOffset(start, end, unit) {
|
||||
let index = start;
|
||||
let offset = 0;
|
||||
while ((index + 10) % 10 !== end) {
|
||||
index += unit;
|
||||
offset += unit;
|
||||
}
|
||||
return offset;
|
||||
}
|
||||
const SingleNumber = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "SingleNumber",
|
||||
props: {
|
||||
prefixCls: String,
|
||||
value: String,
|
||||
count: Number
|
||||
},
|
||||
setup(props) {
|
||||
const originValue = computed(() => Number(props.value));
|
||||
const originCount = computed(() => Math.abs(props.count));
|
||||
const state = reactive({
|
||||
prevValue: originValue.value,
|
||||
prevCount: originCount.value
|
||||
});
|
||||
const onTransitionEnd = () => {
|
||||
state.prevValue = originValue.value;
|
||||
state.prevCount = originCount.value;
|
||||
};
|
||||
const timeout = ref();
|
||||
watch(originValue, () => {
|
||||
clearTimeout(timeout.value);
|
||||
timeout.value = setTimeout(() => {
|
||||
onTransitionEnd();
|
||||
}, 1e3);
|
||||
}, {
|
||||
flush: "post"
|
||||
});
|
||||
return () => {
|
||||
let unitNodes;
|
||||
let offsetStyle = {};
|
||||
const value = originValue.value;
|
||||
if (state.prevValue === value || Number.isNaN(value) || Number.isNaN(state.prevValue)) {
|
||||
unitNodes = [UnitNumber(_extends(_extends({}, props), {
|
||||
current: true
|
||||
}))];
|
||||
offsetStyle = {
|
||||
transition: "none"
|
||||
};
|
||||
} else {
|
||||
unitNodes = [];
|
||||
const end = value + 10;
|
||||
const unitNumberList = [];
|
||||
for (let index = value; index <= end; index += 1) {
|
||||
unitNumberList.push(index);
|
||||
}
|
||||
const prevIndex = unitNumberList.findIndex((n) => n % 10 === state.prevValue);
|
||||
unitNodes = unitNumberList.map((n, index) => {
|
||||
const singleUnit = n % 10;
|
||||
return UnitNumber(_extends(_extends({}, props), {
|
||||
value: singleUnit,
|
||||
offset: index - prevIndex,
|
||||
current: index === prevIndex
|
||||
}));
|
||||
});
|
||||
const unit = state.prevCount < originCount.value ? 1 : -1;
|
||||
offsetStyle = {
|
||||
transform: `translateY(${-getOffset(state.prevValue, value, unit)}00%)`
|
||||
};
|
||||
}
|
||||
return createVNode("span", {
|
||||
"class": `${props.prefixCls}-only`,
|
||||
"style": offsetStyle,
|
||||
"onTransitionend": () => onTransitionEnd()
|
||||
}, [unitNodes]);
|
||||
};
|
||||
}
|
||||
});
|
||||
var __rest$1 = function(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
const scrollNumberProps = {
|
||||
prefixCls: String,
|
||||
count: PropTypes.any,
|
||||
component: String,
|
||||
title: PropTypes.any,
|
||||
show: Boolean
|
||||
};
|
||||
const ScrollNumber = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ScrollNumber",
|
||||
inheritAttrs: false,
|
||||
props: scrollNumberProps,
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls
|
||||
} = useConfigInject("scroll-number", props);
|
||||
return () => {
|
||||
var _a;
|
||||
const _b = _extends(_extends({}, props), attrs), {
|
||||
prefixCls: customizePrefixCls,
|
||||
count,
|
||||
title,
|
||||
show,
|
||||
component: Tag = "sup",
|
||||
class: className,
|
||||
style
|
||||
} = _b, restProps = __rest$1(_b, ["prefixCls", "count", "title", "show", "component", "class", "style"]);
|
||||
const newProps = _extends(_extends({}, restProps), {
|
||||
style,
|
||||
"data-show": props.show,
|
||||
class: classNames(prefixCls.value, className),
|
||||
title
|
||||
});
|
||||
let numberNodes = count;
|
||||
if (count && Number(count) % 1 === 0) {
|
||||
const numberList = String(count).split("");
|
||||
numberNodes = numberList.map((num, i) => createVNode(SingleNumber, {
|
||||
"prefixCls": prefixCls.value,
|
||||
"count": Number(count),
|
||||
"value": num,
|
||||
"key": numberList.length - i
|
||||
}, null));
|
||||
}
|
||||
if (style && style.borderColor) {
|
||||
newProps.style = _extends(_extends({}, style), {
|
||||
boxShadow: `0 0 0 1px ${style.borderColor} inset`
|
||||
});
|
||||
}
|
||||
const children = filterEmpty((_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots));
|
||||
if (children && children.length) {
|
||||
return cloneElement(children, {
|
||||
class: classNames(`${prefixCls.value}-custom-component`)
|
||||
}, false);
|
||||
}
|
||||
return createVNode(Tag, newProps, {
|
||||
default: () => [numberNodes]
|
||||
});
|
||||
};
|
||||
}
|
||||
});
|
||||
const antStatusProcessing = new Keyframe("antStatusProcessing", {
|
||||
"0%": {
|
||||
transform: "scale(0.8)",
|
||||
opacity: 0.5
|
||||
},
|
||||
"100%": {
|
||||
transform: "scale(2.4)",
|
||||
opacity: 0
|
||||
}
|
||||
});
|
||||
const antZoomBadgeIn = new Keyframe("antZoomBadgeIn", {
|
||||
"0%": {
|
||||
transform: "scale(0) translate(50%, -50%)",
|
||||
opacity: 0
|
||||
},
|
||||
"100%": {
|
||||
transform: "scale(1) translate(50%, -50%)"
|
||||
}
|
||||
});
|
||||
const antZoomBadgeOut = new Keyframe("antZoomBadgeOut", {
|
||||
"0%": {
|
||||
transform: "scale(1) translate(50%, -50%)"
|
||||
},
|
||||
"100%": {
|
||||
transform: "scale(0) translate(50%, -50%)",
|
||||
opacity: 0
|
||||
}
|
||||
});
|
||||
const antNoWrapperZoomBadgeIn = new Keyframe("antNoWrapperZoomBadgeIn", {
|
||||
"0%": {
|
||||
transform: "scale(0)",
|
||||
opacity: 0
|
||||
},
|
||||
"100%": {
|
||||
transform: "scale(1)"
|
||||
}
|
||||
});
|
||||
const antNoWrapperZoomBadgeOut = new Keyframe("antNoWrapperZoomBadgeOut", {
|
||||
"0%": {
|
||||
transform: "scale(1)"
|
||||
},
|
||||
"100%": {
|
||||
transform: "scale(0)",
|
||||
opacity: 0
|
||||
}
|
||||
});
|
||||
const antBadgeLoadingCircle = new Keyframe("antBadgeLoadingCircle", {
|
||||
"0%": {
|
||||
transformOrigin: "50%"
|
||||
},
|
||||
"100%": {
|
||||
transform: "translate(50%, -50%) rotate(360deg)",
|
||||
transformOrigin: "50%"
|
||||
}
|
||||
});
|
||||
const genSharedBadgeStyle = (token) => {
|
||||
const {
|
||||
componentCls,
|
||||
iconCls,
|
||||
antCls,
|
||||
badgeFontHeight,
|
||||
badgeShadowSize,
|
||||
badgeHeightSm,
|
||||
motionDurationSlow,
|
||||
badgeStatusSize,
|
||||
marginXS,
|
||||
badgeRibbonOffset
|
||||
} = token;
|
||||
const numberPrefixCls = `${antCls}-scroll-number`;
|
||||
const ribbonPrefixCls = `${antCls}-ribbon`;
|
||||
const ribbonWrapperPrefixCls = `${antCls}-ribbon-wrapper`;
|
||||
const colorPreset = genPresetColor(token, (colorKey, _ref) => {
|
||||
let {
|
||||
darkColor
|
||||
} = _ref;
|
||||
return {
|
||||
[`&${componentCls} ${componentCls}-color-${colorKey}`]: {
|
||||
background: darkColor,
|
||||
[`&:not(${componentCls}-count)`]: {
|
||||
color: darkColor
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
const statusRibbonPreset = genPresetColor(token, (colorKey, _ref2) => {
|
||||
let {
|
||||
darkColor
|
||||
} = _ref2;
|
||||
return {
|
||||
[`&${ribbonPrefixCls}-color-${colorKey}`]: {
|
||||
background: darkColor,
|
||||
color: darkColor
|
||||
}
|
||||
};
|
||||
});
|
||||
return {
|
||||
[componentCls]: _extends(_extends(_extends(_extends({}, resetComponent(token)), {
|
||||
position: "relative",
|
||||
display: "inline-block",
|
||||
width: "fit-content",
|
||||
lineHeight: 1,
|
||||
[`${componentCls}-count`]: {
|
||||
zIndex: token.badgeZIndex,
|
||||
minWidth: token.badgeHeight,
|
||||
height: token.badgeHeight,
|
||||
color: token.badgeTextColor,
|
||||
fontWeight: token.badgeFontWeight,
|
||||
fontSize: token.badgeFontSize,
|
||||
lineHeight: `${token.badgeHeight}px`,
|
||||
whiteSpace: "nowrap",
|
||||
textAlign: "center",
|
||||
background: token.badgeColor,
|
||||
borderRadius: token.badgeHeight / 2,
|
||||
boxShadow: `0 0 0 ${badgeShadowSize}px ${token.badgeShadowColor}`,
|
||||
transition: `background ${token.motionDurationMid}`,
|
||||
a: {
|
||||
color: token.badgeTextColor
|
||||
},
|
||||
"a:hover": {
|
||||
color: token.badgeTextColor
|
||||
},
|
||||
"a:hover &": {
|
||||
background: token.badgeColorHover
|
||||
}
|
||||
},
|
||||
[`${componentCls}-count-sm`]: {
|
||||
minWidth: badgeHeightSm,
|
||||
height: badgeHeightSm,
|
||||
fontSize: token.badgeFontSizeSm,
|
||||
lineHeight: `${badgeHeightSm}px`,
|
||||
borderRadius: badgeHeightSm / 2
|
||||
},
|
||||
[`${componentCls}-multiple-words`]: {
|
||||
padding: `0 ${token.paddingXS}px`
|
||||
},
|
||||
[`${componentCls}-dot`]: {
|
||||
zIndex: token.badgeZIndex,
|
||||
width: token.badgeDotSize,
|
||||
minWidth: token.badgeDotSize,
|
||||
height: token.badgeDotSize,
|
||||
background: token.badgeColor,
|
||||
borderRadius: "100%",
|
||||
boxShadow: `0 0 0 ${badgeShadowSize}px ${token.badgeShadowColor}`
|
||||
},
|
||||
[`${componentCls}-dot${numberPrefixCls}`]: {
|
||||
transition: `background ${motionDurationSlow}`
|
||||
},
|
||||
[`${componentCls}-count, ${componentCls}-dot, ${numberPrefixCls}-custom-component`]: {
|
||||
position: "absolute",
|
||||
top: 0,
|
||||
insetInlineEnd: 0,
|
||||
transform: "translate(50%, -50%)",
|
||||
transformOrigin: "100% 0%",
|
||||
[`&${iconCls}-spin`]: {
|
||||
animationName: antBadgeLoadingCircle,
|
||||
animationDuration: "1s",
|
||||
animationIterationCount: "infinite",
|
||||
animationTimingFunction: "linear"
|
||||
}
|
||||
},
|
||||
[`&${componentCls}-status`]: {
|
||||
lineHeight: "inherit",
|
||||
verticalAlign: "baseline",
|
||||
[`${componentCls}-status-dot`]: {
|
||||
position: "relative",
|
||||
top: -1,
|
||||
display: "inline-block",
|
||||
width: badgeStatusSize,
|
||||
height: badgeStatusSize,
|
||||
verticalAlign: "middle",
|
||||
borderRadius: "50%"
|
||||
},
|
||||
[`${componentCls}-status-success`]: {
|
||||
backgroundColor: token.colorSuccess
|
||||
},
|
||||
[`${componentCls}-status-processing`]: {
|
||||
overflow: "visible",
|
||||
color: token.colorPrimary,
|
||||
backgroundColor: token.colorPrimary,
|
||||
"&::after": {
|
||||
position: "absolute",
|
||||
top: 0,
|
||||
insetInlineStart: 0,
|
||||
width: "100%",
|
||||
height: "100%",
|
||||
borderWidth: badgeShadowSize,
|
||||
borderStyle: "solid",
|
||||
borderColor: "inherit",
|
||||
borderRadius: "50%",
|
||||
animationName: antStatusProcessing,
|
||||
animationDuration: token.badgeProcessingDuration,
|
||||
animationIterationCount: "infinite",
|
||||
animationTimingFunction: "ease-in-out",
|
||||
content: '""'
|
||||
}
|
||||
},
|
||||
[`${componentCls}-status-default`]: {
|
||||
backgroundColor: token.colorTextPlaceholder
|
||||
},
|
||||
[`${componentCls}-status-error`]: {
|
||||
backgroundColor: token.colorError
|
||||
},
|
||||
[`${componentCls}-status-warning`]: {
|
||||
backgroundColor: token.colorWarning
|
||||
},
|
||||
[`${componentCls}-status-text`]: {
|
||||
marginInlineStart: marginXS,
|
||||
color: token.colorText,
|
||||
fontSize: token.fontSize
|
||||
}
|
||||
}
|
||||
}), colorPreset), {
|
||||
[`${componentCls}-zoom-appear, ${componentCls}-zoom-enter`]: {
|
||||
animationName: antZoomBadgeIn,
|
||||
animationDuration: token.motionDurationSlow,
|
||||
animationTimingFunction: token.motionEaseOutBack,
|
||||
animationFillMode: "both"
|
||||
},
|
||||
[`${componentCls}-zoom-leave`]: {
|
||||
animationName: antZoomBadgeOut,
|
||||
animationDuration: token.motionDurationSlow,
|
||||
animationTimingFunction: token.motionEaseOutBack,
|
||||
animationFillMode: "both"
|
||||
},
|
||||
[`&${componentCls}-not-a-wrapper`]: {
|
||||
[`${componentCls}-zoom-appear, ${componentCls}-zoom-enter`]: {
|
||||
animationName: antNoWrapperZoomBadgeIn,
|
||||
animationDuration: token.motionDurationSlow,
|
||||
animationTimingFunction: token.motionEaseOutBack
|
||||
},
|
||||
[`${componentCls}-zoom-leave`]: {
|
||||
animationName: antNoWrapperZoomBadgeOut,
|
||||
animationDuration: token.motionDurationSlow,
|
||||
animationTimingFunction: token.motionEaseOutBack
|
||||
},
|
||||
[`&:not(${componentCls}-status)`]: {
|
||||
verticalAlign: "middle"
|
||||
},
|
||||
[`${numberPrefixCls}-custom-component, ${componentCls}-count`]: {
|
||||
transform: "none"
|
||||
},
|
||||
[`${numberPrefixCls}-custom-component, ${numberPrefixCls}`]: {
|
||||
position: "relative",
|
||||
top: "auto",
|
||||
display: "block",
|
||||
transformOrigin: "50% 50%"
|
||||
}
|
||||
},
|
||||
[`${numberPrefixCls}`]: {
|
||||
overflow: "hidden",
|
||||
[`${numberPrefixCls}-only`]: {
|
||||
position: "relative",
|
||||
display: "inline-block",
|
||||
height: token.badgeHeight,
|
||||
transition: `all ${token.motionDurationSlow} ${token.motionEaseOutBack}`,
|
||||
WebkitTransformStyle: "preserve-3d",
|
||||
WebkitBackfaceVisibility: "hidden",
|
||||
[`> p${numberPrefixCls}-only-unit`]: {
|
||||
height: token.badgeHeight,
|
||||
margin: 0,
|
||||
WebkitTransformStyle: "preserve-3d",
|
||||
WebkitBackfaceVisibility: "hidden"
|
||||
}
|
||||
},
|
||||
[`${numberPrefixCls}-symbol`]: {
|
||||
verticalAlign: "top"
|
||||
}
|
||||
},
|
||||
// ====================== RTL =======================
|
||||
"&-rtl": {
|
||||
direction: "rtl",
|
||||
[`${componentCls}-count, ${componentCls}-dot, ${numberPrefixCls}-custom-component`]: {
|
||||
transform: "translate(-50%, -50%)"
|
||||
}
|
||||
}
|
||||
}),
|
||||
[`${ribbonWrapperPrefixCls}`]: {
|
||||
position: "relative"
|
||||
},
|
||||
[`${ribbonPrefixCls}`]: _extends(_extends(_extends(_extends({}, resetComponent(token)), {
|
||||
position: "absolute",
|
||||
top: marginXS,
|
||||
padding: `0 ${token.paddingXS}px`,
|
||||
color: token.colorPrimary,
|
||||
lineHeight: `${badgeFontHeight}px`,
|
||||
whiteSpace: "nowrap",
|
||||
backgroundColor: token.colorPrimary,
|
||||
borderRadius: token.borderRadiusSM,
|
||||
[`${ribbonPrefixCls}-text`]: {
|
||||
color: token.colorTextLightSolid
|
||||
},
|
||||
[`${ribbonPrefixCls}-corner`]: {
|
||||
position: "absolute",
|
||||
top: "100%",
|
||||
width: badgeRibbonOffset,
|
||||
height: badgeRibbonOffset,
|
||||
color: "currentcolor",
|
||||
border: `${badgeRibbonOffset / 2}px solid`,
|
||||
transform: token.badgeRibbonCornerTransform,
|
||||
transformOrigin: "top",
|
||||
filter: token.badgeRibbonCornerFilter
|
||||
}
|
||||
}), statusRibbonPreset), {
|
||||
[`&${ribbonPrefixCls}-placement-end`]: {
|
||||
insetInlineEnd: -badgeRibbonOffset,
|
||||
borderEndEndRadius: 0,
|
||||
[`${ribbonPrefixCls}-corner`]: {
|
||||
insetInlineEnd: 0,
|
||||
borderInlineEndColor: "transparent",
|
||||
borderBlockEndColor: "transparent"
|
||||
}
|
||||
},
|
||||
[`&${ribbonPrefixCls}-placement-start`]: {
|
||||
insetInlineStart: -badgeRibbonOffset,
|
||||
borderEndStartRadius: 0,
|
||||
[`${ribbonPrefixCls}-corner`]: {
|
||||
insetInlineStart: 0,
|
||||
borderBlockEndColor: "transparent",
|
||||
borderInlineStartColor: "transparent"
|
||||
}
|
||||
},
|
||||
// ====================== RTL =======================
|
||||
"&-rtl": {
|
||||
direction: "rtl"
|
||||
}
|
||||
})
|
||||
};
|
||||
};
|
||||
const useStyle = genComponentStyleHook("Badge", (token) => {
|
||||
const {
|
||||
fontSize,
|
||||
lineHeight,
|
||||
fontSizeSM,
|
||||
lineWidth,
|
||||
marginXS,
|
||||
colorBorderBg
|
||||
} = token;
|
||||
const badgeFontHeight = Math.round(fontSize * lineHeight);
|
||||
const badgeShadowSize = lineWidth;
|
||||
const badgeZIndex = "auto";
|
||||
const badgeHeight = badgeFontHeight - 2 * badgeShadowSize;
|
||||
const badgeTextColor = token.colorBgContainer;
|
||||
const badgeFontWeight = "normal";
|
||||
const badgeFontSize = fontSizeSM;
|
||||
const badgeColor = token.colorError;
|
||||
const badgeColorHover = token.colorErrorHover;
|
||||
const badgeHeightSm = fontSize;
|
||||
const badgeDotSize = fontSizeSM / 2;
|
||||
const badgeFontSizeSm = fontSizeSM;
|
||||
const badgeStatusSize = fontSizeSM / 2;
|
||||
const badgeToken = merge(token, {
|
||||
badgeFontHeight,
|
||||
badgeShadowSize,
|
||||
badgeZIndex,
|
||||
badgeHeight,
|
||||
badgeTextColor,
|
||||
badgeFontWeight,
|
||||
badgeFontSize,
|
||||
badgeColor,
|
||||
badgeColorHover,
|
||||
badgeShadowColor: colorBorderBg,
|
||||
badgeHeightSm,
|
||||
badgeDotSize,
|
||||
badgeFontSizeSm,
|
||||
badgeStatusSize,
|
||||
badgeProcessingDuration: "1.2s",
|
||||
badgeRibbonOffset: marginXS,
|
||||
// Follow token just by Design. Not related with token
|
||||
badgeRibbonCornerTransform: "scaleY(0.75)",
|
||||
badgeRibbonCornerFilter: `brightness(75%)`
|
||||
});
|
||||
return [genSharedBadgeStyle(badgeToken)];
|
||||
});
|
||||
var __rest = function(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
const ribbonProps = () => ({
|
||||
prefix: String,
|
||||
color: {
|
||||
type: String
|
||||
},
|
||||
text: PropTypes.any,
|
||||
placement: {
|
||||
type: String,
|
||||
default: "end"
|
||||
}
|
||||
});
|
||||
const Ribbon = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ABadgeRibbon",
|
||||
inheritAttrs: false,
|
||||
props: ribbonProps(),
|
||||
slots: Object,
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls,
|
||||
direction
|
||||
} = useConfigInject("ribbon", props);
|
||||
const [wrapSSR, hashId] = useStyle(prefixCls);
|
||||
const colorInPreset = computed(() => isPresetColor(props.color, false));
|
||||
const ribbonCls = computed(() => [prefixCls.value, `${prefixCls.value}-placement-${props.placement}`, {
|
||||
[`${prefixCls.value}-rtl`]: direction.value === "rtl",
|
||||
[`${prefixCls.value}-color-${props.color}`]: colorInPreset.value
|
||||
}]);
|
||||
return () => {
|
||||
var _a, _b;
|
||||
const {
|
||||
class: className,
|
||||
style
|
||||
} = attrs, restAttrs = __rest(attrs, ["class", "style"]);
|
||||
const colorStyle = {};
|
||||
const cornerColorStyle = {};
|
||||
if (props.color && !colorInPreset.value) {
|
||||
colorStyle.background = props.color;
|
||||
cornerColorStyle.color = props.color;
|
||||
}
|
||||
return wrapSSR(createVNode("div", _objectSpread({
|
||||
"class": `${prefixCls.value}-wrapper ${hashId.value}`
|
||||
}, restAttrs), [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots), createVNode("div", {
|
||||
"class": [ribbonCls.value, className, hashId.value],
|
||||
"style": _extends(_extends({}, colorStyle), style)
|
||||
}, [createVNode("span", {
|
||||
"class": `${prefixCls.value}-text`
|
||||
}, [props.text || ((_b = slots.text) === null || _b === void 0 ? void 0 : _b.call(slots))]), createVNode("div", {
|
||||
"class": `${prefixCls.value}-corner`,
|
||||
"style": cornerColorStyle
|
||||
}, null)])]));
|
||||
};
|
||||
}
|
||||
});
|
||||
const badgeProps = () => ({
|
||||
/** Number to show in badge */
|
||||
count: PropTypes.any.def(null),
|
||||
showZero: {
|
||||
type: Boolean,
|
||||
default: void 0
|
||||
},
|
||||
/** Max count to show */
|
||||
overflowCount: {
|
||||
type: Number,
|
||||
default: 99
|
||||
},
|
||||
/** whether to show red dot without number */
|
||||
dot: {
|
||||
type: Boolean,
|
||||
default: void 0
|
||||
},
|
||||
prefixCls: String,
|
||||
scrollNumberPrefixCls: String,
|
||||
status: {
|
||||
type: String
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: "default"
|
||||
},
|
||||
color: String,
|
||||
text: PropTypes.any,
|
||||
offset: Array,
|
||||
numberStyle: {
|
||||
type: Object,
|
||||
default: void 0
|
||||
},
|
||||
title: String
|
||||
});
|
||||
const Badge = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ABadge",
|
||||
Ribbon,
|
||||
inheritAttrs: false,
|
||||
props: badgeProps(),
|
||||
slots: Object,
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
attrs
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls,
|
||||
direction
|
||||
} = useConfigInject("badge", props);
|
||||
const [wrapSSR, hashId] = useStyle(prefixCls);
|
||||
const numberedDisplayCount = computed(() => {
|
||||
return props.count > props.overflowCount ? `${props.overflowCount}+` : props.count;
|
||||
});
|
||||
const isZero = computed(() => numberedDisplayCount.value === "0" || numberedDisplayCount.value === 0);
|
||||
const ignoreCount = computed(() => props.count === null || isZero.value && !props.showZero);
|
||||
const hasStatus = computed(() => (props.status !== null && props.status !== void 0 || props.color !== null && props.color !== void 0) && ignoreCount.value);
|
||||
const showAsDot = computed(() => props.dot && !isZero.value);
|
||||
const mergedCount = computed(() => showAsDot.value ? "" : numberedDisplayCount.value);
|
||||
const isHidden = computed(() => {
|
||||
const isEmpty = mergedCount.value === null || mergedCount.value === void 0 || mergedCount.value === "";
|
||||
return (isEmpty || isZero.value && !props.showZero) && !showAsDot.value;
|
||||
});
|
||||
const livingCount = ref(props.count);
|
||||
const displayCount = ref(mergedCount.value);
|
||||
const isDotRef = ref(showAsDot.value);
|
||||
watch([() => props.count, mergedCount, showAsDot], () => {
|
||||
if (!isHidden.value) {
|
||||
livingCount.value = props.count;
|
||||
displayCount.value = mergedCount.value;
|
||||
isDotRef.value = showAsDot.value;
|
||||
}
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
const isInternalColor = computed(() => isPresetColor(props.color, false));
|
||||
const statusCls = computed(() => ({
|
||||
[`${prefixCls.value}-status-dot`]: hasStatus.value,
|
||||
[`${prefixCls.value}-status-${props.status}`]: !!props.status,
|
||||
[`${prefixCls.value}-color-${props.color}`]: isInternalColor.value
|
||||
}));
|
||||
const statusStyle = computed(() => {
|
||||
if (props.color && !isInternalColor.value) {
|
||||
return {
|
||||
background: props.color,
|
||||
color: props.color
|
||||
};
|
||||
} else {
|
||||
return {};
|
||||
}
|
||||
});
|
||||
const scrollNumberCls = computed(() => ({
|
||||
[`${prefixCls.value}-dot`]: isDotRef.value,
|
||||
[`${prefixCls.value}-count`]: !isDotRef.value,
|
||||
[`${prefixCls.value}-count-sm`]: props.size === "small",
|
||||
[`${prefixCls.value}-multiple-words`]: !isDotRef.value && displayCount.value && displayCount.value.toString().length > 1,
|
||||
[`${prefixCls.value}-status-${props.status}`]: !!props.status,
|
||||
[`${prefixCls.value}-color-${props.color}`]: isInternalColor.value
|
||||
}));
|
||||
return () => {
|
||||
var _a, _b;
|
||||
const {
|
||||
offset,
|
||||
title,
|
||||
color
|
||||
} = props;
|
||||
const style = attrs.style;
|
||||
const text = getPropsSlot(slots, props, "text");
|
||||
const pre = prefixCls.value;
|
||||
const count = livingCount.value;
|
||||
let children = flattenChildren((_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots));
|
||||
children = children.length ? children : null;
|
||||
const visible = !!(!isHidden.value || slots.count);
|
||||
const mergedStyle = (() => {
|
||||
if (!offset) {
|
||||
return _extends({}, style);
|
||||
}
|
||||
const offsetStyle = {
|
||||
marginTop: isNumeric(offset[1]) ? `${offset[1]}px` : offset[1]
|
||||
};
|
||||
if (direction.value === "rtl") {
|
||||
offsetStyle.left = `${parseInt(offset[0], 10)}px`;
|
||||
} else {
|
||||
offsetStyle.right = `${-parseInt(offset[0], 10)}px`;
|
||||
}
|
||||
return _extends(_extends({}, offsetStyle), style);
|
||||
})();
|
||||
const titleNode = title !== null && title !== void 0 ? title : typeof count === "string" || typeof count === "number" ? count : void 0;
|
||||
const statusTextNode = visible || !text ? null : createVNode("span", {
|
||||
"class": `${pre}-status-text`
|
||||
}, [text]);
|
||||
const displayNode = typeof count === "object" || count === void 0 && slots.count ? cloneElement(count !== null && count !== void 0 ? count : (_b = slots.count) === null || _b === void 0 ? void 0 : _b.call(slots), {
|
||||
style: mergedStyle
|
||||
}, false) : null;
|
||||
const badgeClassName = classNames(pre, {
|
||||
[`${pre}-status`]: hasStatus.value,
|
||||
[`${pre}-not-a-wrapper`]: !children,
|
||||
[`${pre}-rtl`]: direction.value === "rtl"
|
||||
}, attrs.class, hashId.value);
|
||||
if (!children && hasStatus.value) {
|
||||
const statusTextColor = mergedStyle.color;
|
||||
return wrapSSR(createVNode("span", _objectSpread(_objectSpread({}, attrs), {}, {
|
||||
"class": badgeClassName,
|
||||
"style": mergedStyle
|
||||
}), [createVNode("span", {
|
||||
"class": statusCls.value,
|
||||
"style": statusStyle.value
|
||||
}, null), createVNode("span", {
|
||||
"style": {
|
||||
color: statusTextColor
|
||||
},
|
||||
"class": `${pre}-status-text`
|
||||
}, [text])]));
|
||||
}
|
||||
const transitionProps = getTransitionProps(children ? `${pre}-zoom` : "", {
|
||||
appear: false
|
||||
});
|
||||
let scrollNumberStyle = _extends(_extends({}, mergedStyle), props.numberStyle);
|
||||
if (color && !isInternalColor.value) {
|
||||
scrollNumberStyle = scrollNumberStyle || {};
|
||||
scrollNumberStyle.background = color;
|
||||
}
|
||||
return wrapSSR(createVNode("span", _objectSpread(_objectSpread({}, attrs), {}, {
|
||||
"class": badgeClassName
|
||||
}), [children, createVNode(Transition, transitionProps, {
|
||||
default: () => [withDirectives(createVNode(ScrollNumber, {
|
||||
"prefixCls": props.scrollNumberPrefixCls,
|
||||
"show": visible,
|
||||
"class": scrollNumberCls.value,
|
||||
"count": displayCount.value,
|
||||
"title": titleNode,
|
||||
"style": scrollNumberStyle,
|
||||
"key": "scrollNumber"
|
||||
}, {
|
||||
default: () => [displayNode]
|
||||
}), [[vShow, visible]])]
|
||||
}), statusTextNode]));
|
||||
};
|
||||
}
|
||||
});
|
||||
Badge.install = function(app) {
|
||||
app.component(Badge.name, Badge);
|
||||
app.component(Ribbon.name, Ribbon);
|
||||
return app;
|
||||
};
|
||||
|
||||
export { Badge as B };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/edit/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-2UMFxyr4.mjs';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/add/product/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,322 @@
|
||||
import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import { defineComponent, shallowRef, watchEffect, computed, createVNode, Fragment } from 'vue';
|
||||
import { z as useConfigInject, A as classNames, ae as Wave, B as genComponentStyleHook, C as merge, af as CloseOutlined, P as PropTypes, ag as eventType, J as resetComponent, ah as capitalize } from './server.mjs';
|
||||
import { i as isPresetColor, a as isPresetStatusColor, g as genPresetColor } from './index-DN2Eqyc3.mjs';
|
||||
import _extends from '@babel/runtime/helpers/esm/extends';
|
||||
|
||||
const genTagStatusStyle = (token, status, cssVariableType) => {
|
||||
const capitalizedCssVariableType = capitalize(cssVariableType);
|
||||
return {
|
||||
[`${token.componentCls}-${status}`]: {
|
||||
color: token[`color${cssVariableType}`],
|
||||
background: token[`color${capitalizedCssVariableType}Bg`],
|
||||
borderColor: token[`color${capitalizedCssVariableType}Border`],
|
||||
[`&${token.componentCls}-borderless`]: {
|
||||
borderColor: "transparent"
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
const genPresetStyle = (token) => genPresetColor(token, (colorKey, _ref) => {
|
||||
let {
|
||||
textColor,
|
||||
lightBorderColor,
|
||||
lightColor,
|
||||
darkColor
|
||||
} = _ref;
|
||||
return {
|
||||
[`${token.componentCls}-${colorKey}`]: {
|
||||
color: textColor,
|
||||
background: lightColor,
|
||||
borderColor: lightBorderColor,
|
||||
// Inverse color
|
||||
"&-inverse": {
|
||||
color: token.colorTextLightSolid,
|
||||
background: darkColor,
|
||||
borderColor: darkColor
|
||||
},
|
||||
[`&${token.componentCls}-borderless`]: {
|
||||
borderColor: "transparent"
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
const genBaseStyle = (token) => {
|
||||
const {
|
||||
paddingXXS,
|
||||
lineWidth,
|
||||
tagPaddingHorizontal,
|
||||
componentCls
|
||||
} = token;
|
||||
const paddingInline = tagPaddingHorizontal - lineWidth;
|
||||
const iconMarginInline = paddingXXS - lineWidth;
|
||||
return {
|
||||
// Result
|
||||
[componentCls]: _extends(_extends({}, resetComponent(token)), {
|
||||
display: "inline-block",
|
||||
height: "auto",
|
||||
marginInlineEnd: token.marginXS,
|
||||
paddingInline,
|
||||
fontSize: token.tagFontSize,
|
||||
lineHeight: `${token.tagLineHeight}px`,
|
||||
whiteSpace: "nowrap",
|
||||
background: token.tagDefaultBg,
|
||||
border: `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,
|
||||
borderRadius: token.borderRadiusSM,
|
||||
opacity: 1,
|
||||
transition: `all ${token.motionDurationMid}`,
|
||||
textAlign: "start",
|
||||
// RTL
|
||||
[`&${componentCls}-rtl`]: {
|
||||
direction: "rtl"
|
||||
},
|
||||
"&, a, a:hover": {
|
||||
color: token.tagDefaultColor
|
||||
},
|
||||
[`${componentCls}-close-icon`]: {
|
||||
marginInlineStart: iconMarginInline,
|
||||
color: token.colorTextDescription,
|
||||
fontSize: token.tagIconSize,
|
||||
cursor: "pointer",
|
||||
transition: `all ${token.motionDurationMid}`,
|
||||
"&:hover": {
|
||||
color: token.colorTextHeading
|
||||
}
|
||||
},
|
||||
[`&${componentCls}-has-color`]: {
|
||||
borderColor: "transparent",
|
||||
[`&, a, a:hover, ${token.iconCls}-close, ${token.iconCls}-close:hover`]: {
|
||||
color: token.colorTextLightSolid
|
||||
}
|
||||
},
|
||||
[`&-checkable`]: {
|
||||
backgroundColor: "transparent",
|
||||
borderColor: "transparent",
|
||||
cursor: "pointer",
|
||||
[`&:not(${componentCls}-checkable-checked):hover`]: {
|
||||
color: token.colorPrimary,
|
||||
backgroundColor: token.colorFillSecondary
|
||||
},
|
||||
"&:active, &-checked": {
|
||||
color: token.colorTextLightSolid
|
||||
},
|
||||
"&-checked": {
|
||||
backgroundColor: token.colorPrimary,
|
||||
"&:hover": {
|
||||
backgroundColor: token.colorPrimaryHover
|
||||
}
|
||||
},
|
||||
"&:active": {
|
||||
backgroundColor: token.colorPrimaryActive
|
||||
}
|
||||
},
|
||||
[`&-hidden`]: {
|
||||
display: "none"
|
||||
},
|
||||
// To ensure that a space will be placed between character and `Icon`.
|
||||
[`> ${token.iconCls} + span, > span + ${token.iconCls}`]: {
|
||||
marginInlineStart: paddingInline
|
||||
}
|
||||
}),
|
||||
[`${componentCls}-borderless`]: {
|
||||
borderColor: "transparent",
|
||||
background: token.tagBorderlessBg
|
||||
}
|
||||
};
|
||||
};
|
||||
const useStyle = genComponentStyleHook("Tag", (token) => {
|
||||
const {
|
||||
fontSize,
|
||||
lineHeight,
|
||||
lineWidth,
|
||||
fontSizeIcon
|
||||
} = token;
|
||||
const tagHeight = Math.round(fontSize * lineHeight);
|
||||
const tagFontSize = token.fontSizeSM;
|
||||
const tagLineHeight = tagHeight - lineWidth * 2;
|
||||
const tagDefaultBg = token.colorFillAlter;
|
||||
const tagDefaultColor = token.colorText;
|
||||
const tagToken = merge(token, {
|
||||
tagFontSize,
|
||||
tagLineHeight,
|
||||
tagDefaultBg,
|
||||
tagDefaultColor,
|
||||
tagIconSize: fontSizeIcon - 2 * lineWidth,
|
||||
tagPaddingHorizontal: 8,
|
||||
tagBorderlessBg: token.colorFillTertiary
|
||||
});
|
||||
return [genBaseStyle(tagToken), genPresetStyle(tagToken), genTagStatusStyle(tagToken, "success", "Success"), genTagStatusStyle(tagToken, "processing", "Info"), genTagStatusStyle(tagToken, "error", "Error"), genTagStatusStyle(tagToken, "warning", "Warning")];
|
||||
});
|
||||
const checkableTagProps = () => ({
|
||||
prefixCls: String,
|
||||
checked: {
|
||||
type: Boolean,
|
||||
default: void 0
|
||||
},
|
||||
onChange: {
|
||||
type: Function
|
||||
},
|
||||
onClick: {
|
||||
type: Function
|
||||
},
|
||||
"onUpdate:checked": Function
|
||||
});
|
||||
const CheckableTag = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ACheckableTag",
|
||||
inheritAttrs: false,
|
||||
props: checkableTagProps(),
|
||||
// emits: ['update:checked', 'change', 'click'],
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
emit,
|
||||
attrs
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls
|
||||
} = useConfigInject("tag", props);
|
||||
const [wrapSSR, hashId] = useStyle(prefixCls);
|
||||
const handleClick = (e) => {
|
||||
const {
|
||||
checked
|
||||
} = props;
|
||||
emit("update:checked", !checked);
|
||||
emit("change", !checked);
|
||||
emit("click", e);
|
||||
};
|
||||
const cls = computed(() => classNames(prefixCls.value, hashId.value, {
|
||||
[`${prefixCls.value}-checkable`]: true,
|
||||
[`${prefixCls.value}-checkable-checked`]: props.checked
|
||||
}));
|
||||
return () => {
|
||||
var _a;
|
||||
return wrapSSR(createVNode("span", _objectSpread(_objectSpread({}, attrs), {}, {
|
||||
"class": [cls.value, attrs.class],
|
||||
"onClick": handleClick
|
||||
}), [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]));
|
||||
};
|
||||
}
|
||||
});
|
||||
const tagProps = () => ({
|
||||
prefixCls: String,
|
||||
color: {
|
||||
type: String
|
||||
},
|
||||
closable: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
closeIcon: PropTypes.any,
|
||||
/** @deprecated `visible` will be removed in next major version. */
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: void 0
|
||||
},
|
||||
onClose: {
|
||||
type: Function
|
||||
},
|
||||
onClick: eventType(),
|
||||
"onUpdate:visible": Function,
|
||||
icon: PropTypes.any,
|
||||
bordered: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
});
|
||||
const Tag = defineComponent({
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
name: "ATag",
|
||||
inheritAttrs: false,
|
||||
props: tagProps(),
|
||||
// emits: ['update:visible', 'close'],
|
||||
slots: Object,
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
emit,
|
||||
attrs
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls,
|
||||
direction
|
||||
} = useConfigInject("tag", props);
|
||||
const [wrapSSR, hashId] = useStyle(prefixCls);
|
||||
const visible = shallowRef(true);
|
||||
watchEffect(() => {
|
||||
if (props.visible !== void 0) {
|
||||
visible.value = props.visible;
|
||||
}
|
||||
});
|
||||
const handleCloseClick = (e) => {
|
||||
e.stopPropagation();
|
||||
emit("update:visible", false);
|
||||
emit("close", e);
|
||||
if (e.defaultPrevented) {
|
||||
return;
|
||||
}
|
||||
if (props.visible === void 0) {
|
||||
visible.value = false;
|
||||
}
|
||||
};
|
||||
const isInternalColor = computed(() => isPresetColor(props.color) || isPresetStatusColor(props.color));
|
||||
const tagClassName = computed(() => classNames(prefixCls.value, hashId.value, {
|
||||
[`${prefixCls.value}-${props.color}`]: isInternalColor.value,
|
||||
[`${prefixCls.value}-has-color`]: props.color && !isInternalColor.value,
|
||||
[`${prefixCls.value}-hidden`]: !visible.value,
|
||||
[`${prefixCls.value}-rtl`]: direction.value === "rtl",
|
||||
[`${prefixCls.value}-borderless`]: !props.bordered
|
||||
}));
|
||||
const handleClick = (e) => {
|
||||
emit("click", e);
|
||||
};
|
||||
return () => {
|
||||
var _a, _b, _c;
|
||||
const {
|
||||
icon = (_a = slots.icon) === null || _a === void 0 ? void 0 : _a.call(slots),
|
||||
color,
|
||||
closeIcon = (_b = slots.closeIcon) === null || _b === void 0 ? void 0 : _b.call(slots),
|
||||
closable = false
|
||||
} = props;
|
||||
const renderCloseIcon = () => {
|
||||
if (closable) {
|
||||
return closeIcon ? createVNode("span", {
|
||||
"class": `${prefixCls.value}-close-icon`,
|
||||
"onClick": handleCloseClick
|
||||
}, [closeIcon]) : createVNode(CloseOutlined, {
|
||||
"class": `${prefixCls.value}-close-icon`,
|
||||
"onClick": handleCloseClick
|
||||
}, null);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
const tagStyle = {
|
||||
backgroundColor: color && !isInternalColor.value ? color : void 0
|
||||
};
|
||||
const iconNode = icon || null;
|
||||
const children = (_c = slots.default) === null || _c === void 0 ? void 0 : _c.call(slots);
|
||||
const kids = iconNode ? createVNode(Fragment, null, [iconNode, createVNode("span", null, [children])]) : children;
|
||||
const isNeedWave = props.onClick !== void 0;
|
||||
const tagNode = createVNode("span", _objectSpread(_objectSpread({}, attrs), {}, {
|
||||
"onClick": handleClick,
|
||||
"class": [tagClassName.value, attrs.class],
|
||||
"style": [tagStyle, attrs.style]
|
||||
}), [kids, renderCloseIcon()]);
|
||||
return wrapSSR(isNeedWave ? createVNode(Wave, null, {
|
||||
default: () => [tagNode]
|
||||
}) : tagNode);
|
||||
};
|
||||
}
|
||||
});
|
||||
Tag.CheckableTag = CheckableTag;
|
||||
Tag.install = function(app) {
|
||||
app.component(Tag.name, Tag);
|
||||
app.component(CheckableTag.name, CheckableTag);
|
||||
return app;
|
||||
};
|
||||
|
||||
export { Tag as T };
|
||||
@@ -0,0 +1,528 @@
|
||||
import { _ as __nuxt_component_3 } from './CropperModal-Bf6YuAAD.mjs';
|
||||
import { defineComponent, ref, watch, resolveDirective, unref, withCtx, mergeProps, createVNode, toDisplayString, openBlock, createBlock, withDirectives, createCommentVNode, withModifiers, Fragment, renderList, createTextVNode, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderAttr, ssrInterpolate, ssrRenderAttrs, ssrGetDirectiveProps, ssrRenderList } from 'vue/server-renderer';
|
||||
import { _ as _imports_0 } from './close_light-DbrEdRZI.mjs';
|
||||
import { Camera } from '@capacitor/camera';
|
||||
import { Capacitor } from '@capacitor/core';
|
||||
import { u as useRouter$1, a as useConfigStore, aT as useRoute, aZ as useRouteStore, d as api$1 } from './server.mjs';
|
||||
import { m as mediaFilesUrl, p as previewImg, o as original, l as loading, d as findEdit, r as resetFormFields, e as handleProductCropped, u as useProductStore, i as items, g as previewImgPos, j as originalFile } from './product-DqXo6FRa.mjs';
|
||||
import { i as img_gif } from './post_loading-CMOcYm9B.mjs';
|
||||
import { B as BasicIconOld } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { S as Spin } from './index-CO_xVqO1.mjs';
|
||||
import { _ as __nuxt_component_1, a as __nuxt_component_2 } from './RadioButton-CE-ccpG2.mjs';
|
||||
|
||||
const maxFiles = 10;
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const router = useRouter$1();
|
||||
const config = useConfigStore();
|
||||
const type = ref("");
|
||||
const fileInput = ref(null);
|
||||
const fileInputLimited = ref(null);
|
||||
const imageSelected = ref(-2);
|
||||
const route = useRoute();
|
||||
const cropperVisible = ref(false);
|
||||
const cropping = ref();
|
||||
function onBackPage() {
|
||||
router.push({ name: "home" });
|
||||
resetFormFields();
|
||||
useProductStore().mediaFiles = [];
|
||||
items.value = [];
|
||||
}
|
||||
function openCropper() {
|
||||
cropping.value = previewImg.value;
|
||||
previewImgPos.value = mediaFilesUrl.value.findIndex((x) => x === previewImg.value);
|
||||
if (original.value.url === previewImg.value) previewImgPos.value = -2;
|
||||
cropperVisible.value = true;
|
||||
}
|
||||
watch(mediaFilesUrl, (files2) => {
|
||||
if (mediaFilesUrl.value?.length === 0) previewImg.value = "";
|
||||
else if (mediaFilesUrl.value?.length === 1) previewImg.value = mediaFilesUrl.value[0]?.url;
|
||||
else if (files2) {
|
||||
console.log(imageSelected.value, files2);
|
||||
if (imageSelected.value == -2)
|
||||
previewImg.value = files2[files2?.length - 1]?.url;
|
||||
else previewImg.value = files2[imageSelected.value]?.url;
|
||||
}
|
||||
}, { deep: true });
|
||||
watch(original, (file) => {
|
||||
previewImg.value = file.url;
|
||||
imageSelected.value = -1;
|
||||
}, { deep: true });
|
||||
function goNextPage() {
|
||||
if (original.value.url) {
|
||||
if (route.name == "edit-product-id-inputProduct")
|
||||
router.push({ name: "edit-product-id-infProduct" });
|
||||
else
|
||||
router.push({ name: "add-product-infProduct" });
|
||||
} else {
|
||||
console.log(useProductStore().originalFile, useProductStore().mediaFiles);
|
||||
api$1.warn(config.useString("addOriginalMedia"));
|
||||
}
|
||||
console.log(useProductStore().originalFile, useProductStore().mediaFiles);
|
||||
}
|
||||
function showPreview(index) {
|
||||
imageSelected.value = index;
|
||||
if (index === -1) {
|
||||
previewImg.value = original.value.url;
|
||||
} else {
|
||||
previewImg.value = mediaFilesUrl.value[index].url;
|
||||
}
|
||||
}
|
||||
const isVideo = (file) => file.includes(".mp4") || file.includes(".mov") || file.includes("video");
|
||||
const editImage = async () => {
|
||||
if (imageSelected.value == -1) {
|
||||
await selectMainMedia();
|
||||
} else {
|
||||
await selectMedia();
|
||||
}
|
||||
};
|
||||
const selectMedia = async () => {
|
||||
console.log(imageSelected.value, "Media");
|
||||
try {
|
||||
if (Capacitor.isNativePlatform()) {
|
||||
if (imageSelected.value == -2) {
|
||||
const files2 = await Camera.pickImages({ limit: maxFiles - mediaFilesUrl.value.length });
|
||||
files2.photos.forEach((file) => {
|
||||
useProductStore().mediaFiles.push({ file, index: mediaFilesUrl.value.length });
|
||||
mediaFilesUrl.value.push({ url: file.webPath, index: mediaFilesUrl.value.length });
|
||||
});
|
||||
imageSelected.value = mediaFilesUrl.value.length - 1;
|
||||
} else {
|
||||
const file = await Camera.pickImages({ limit: 1 });
|
||||
if (file.photos.length > 0) {
|
||||
mediaFilesUrl.value[imageSelected.value].url = file.photos[0].webPath;
|
||||
useProductStore().mediaFiles[imageSelected.value].file = file.photos[0];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log(imageSelected.value, "MediaA");
|
||||
if (imageSelected.value == -2) {
|
||||
fileInput.value.click();
|
||||
} else
|
||||
fileInputLimited.value.click();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error selecting media:", error);
|
||||
}
|
||||
};
|
||||
const selectMainMedia = async () => {
|
||||
try {
|
||||
if (Capacitor.isNativePlatform()) {
|
||||
const file = await Camera.pickImages({ limit: 1 });
|
||||
if (file.photos.length > 0) {
|
||||
original.value.url = file.photos[0].webPath;
|
||||
useProductStore().originalFile = { file: file.photos[0], index: 0 };
|
||||
}
|
||||
} else {
|
||||
console.log(imageSelected.value, "main");
|
||||
await fileInputLimited.value.click();
|
||||
console.log(imageSelected.value, "mainA");
|
||||
fileInputLimited.value.onchange = (event) => {
|
||||
const files2 = event.target.files;
|
||||
console.log(files2, 8888);
|
||||
if (files2.length > 0) {
|
||||
original.value.url = URL.createObjectURL(files2[0]);
|
||||
console.log(files2, 9999);
|
||||
}
|
||||
setTimeout(() => {
|
||||
fileInputLimited.value.value = null;
|
||||
}, 10);
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error selecting main media:", error);
|
||||
}
|
||||
};
|
||||
const handleFileUpload = (event) => {
|
||||
console.log(imageSelected.value, 4555);
|
||||
const files2 = event.target.files;
|
||||
if (files2.length == 0) {
|
||||
return;
|
||||
}
|
||||
console.log(event, 45);
|
||||
if (!original.value.url && files2.length > 0 || imageSelected.value == -1 && files2.length > 0) {
|
||||
original.value.url = URL.createObjectURL(files2[0]);
|
||||
useProductStore().originalFile = { file: files2[0], index: 0 };
|
||||
console.log(original.value);
|
||||
} else if (imageSelected.value == -2) {
|
||||
Array.from(files2).forEach((file) => {
|
||||
let mediaFilesUrllength = mediaFilesUrl.value.at(-1)?.index ?? 0;
|
||||
if (mediaFilesUrl.value.length < maxFiles) {
|
||||
mediaFilesUrl.value.push({ url: URL.createObjectURL(file), index: mediaFilesUrllength + 1 });
|
||||
useProductStore().mediaFiles.push({ file, index: mediaFilesUrllength + 1 });
|
||||
useProductStore().mediaFiles.sort((a, b) => a.index - b.index);
|
||||
imageSelected.value = mediaFilesUrl.value.length - 1;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
mediaFilesUrl.value[imageSelected.value].url = URL.createObjectURL(files2[0]);
|
||||
if (useProductStore().mediaFiles.length > 0) {
|
||||
if (!useProductStore().mediaFiles.some((e, i) => {
|
||||
if (e.index == mediaFilesUrl.value[imageSelected.value].index) {
|
||||
e.file = files2[0];
|
||||
return true;
|
||||
}
|
||||
})) {
|
||||
useProductStore().mediaFiles.push({ file: files2[0], index: mediaFilesUrl.value[imageSelected.value].index });
|
||||
console.log(useProductStore().mediaFiles);
|
||||
}
|
||||
} else
|
||||
useProductStore().mediaFiles.push({ file: files2[0], index: mediaFilesUrl.value[imageSelected.value].index });
|
||||
useProductStore().mediaFiles.sort((a, b) => a.index - b.index);
|
||||
}
|
||||
fileInput.value.value = "";
|
||||
fileInputLimited.value.value = "";
|
||||
console.log(useProductStore().mediaFiles);
|
||||
};
|
||||
const handleDrop = (event) => {
|
||||
event.preventDefault();
|
||||
const files2 = event.dataTransfer.files;
|
||||
Array.from(files2).forEach((file) => {
|
||||
if (mediaFilesUrl.value.length < maxFiles) {
|
||||
useProductStore().mediaFiles.push({ file, index: mediaFilesUrl.value.length });
|
||||
mediaFilesUrl.value.push({ url: URL.createObjectURL(file), index: mediaFilesUrl.value.length });
|
||||
}
|
||||
});
|
||||
};
|
||||
const removeMedia = (index, mediaIndex) => {
|
||||
const indexDelete = useProductStore().mediaFiles.findIndex((e) => e.index == mediaIndex);
|
||||
mediaFilesUrl.value.splice(index, 1);
|
||||
if (indexDelete >= 0)
|
||||
useProductStore().mediaFiles.splice(indexDelete, 1);
|
||||
console.log(useProductStore().mediaFiles, mediaFilesUrl.value);
|
||||
};
|
||||
const removeMainMedia = () => {
|
||||
original.value.url = void 0;
|
||||
originalFile.value = void 0;
|
||||
};
|
||||
useRouteStore();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_a_spin = Spin;
|
||||
const _component_a_radio_group = __nuxt_component_1;
|
||||
const _component_a_radio_button = __nuxt_component_2;
|
||||
const _component_CropperModal = __nuxt_component_3;
|
||||
const _directive_lazy = resolveDirective("lazy");
|
||||
let _temp0, _temp1, _temp2;
|
||||
_push(`<!--[--><div class="h-screen bg-black">`);
|
||||
_push(ssrRenderComponent(_component_a_spin, { spinning: unref(loading) }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<div class="w-full h-full bg-black text-white"${_scopeId}><div class="flex sticky top-0 w-full p-4 gap-8 justify-between items-center"${_scopeId}><div class="flex gap-8 items-center"${_scopeId}><img${ssrRenderAttr("src", _imports_0)}${ssrRenderAttr("alt", unref(config).appName.en)} class="cursor-pointer w-4"${_scopeId}><div class="font-semibold text-lg"${_scopeId}>${ssrInterpolate(unref(findEdit)(unref(route).name) ? unref(config).useString("editProduct") : unref(config).useString("newProduct"))}</div></div><div class="text-primary text-sm cursor-pointer"${_scopeId}>${ssrInterpolate(unref(config).useString("next"))}</div></div><div class="sm:flex gap-10"${_scopeId}><div class="sticky bg-black top-60px z-1"${_scopeId}><div class="aspect-square flex items-center justify-center sm:w-30vw"${_scopeId}>`);
|
||||
if (unref(previewImg)) {
|
||||
_push2(`<div class="relative w-full"${_scopeId}><img${ssrRenderAttrs(_temp0 = mergeProps({
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-full object-scale-down aspect-square"
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(previewImg), loading: unref(img_gif), error: unref(img_gif) })))}${_scopeId}>${"textContent" in _temp0 ? ssrInterpolate(_temp0.textContent) : _temp0.innerHTML ?? ""}`);
|
||||
if (unref(previewImg)) {
|
||||
_push2(`<div class="flex absolute gap-2 right-5 bottom-5"${_scopeId}><div class="flex bg-black/80 items-center rounded gap-2 p-2"${_scopeId}>`);
|
||||
_push2(ssrRenderComponent(BasicIconOld, { icon: "vuesax-linear:crop" }, null, _parent2, _scopeId));
|
||||
_push2(`</div><div class="flex bg-black/80 items-center rounded gap-2 p-2"${_scopeId}>`);
|
||||
_push2(ssrRenderComponent(BasicIconOld, { icon: "vuesax-linear:gallery-edit" }, null, _parent2, _scopeId));
|
||||
_push2(`</div></div>`);
|
||||
} else {
|
||||
_push2(`<!---->`);
|
||||
}
|
||||
if (unref(previewImg)) {
|
||||
_push2(`<div class="flex absolute left-5 bottom-0"${_scopeId}></div>`);
|
||||
} else {
|
||||
_push2(`<!---->`);
|
||||
}
|
||||
_push2(`</div>`);
|
||||
} else if (unref(mediaFilesUrl)?.length === 0) {
|
||||
_push2(`<p class="empty-state"${_scopeId}>${ssrInterpolate(unref(config).useString("tapPlusToAdd"))}</p>`);
|
||||
} else {
|
||||
_push2(`<!---->`);
|
||||
}
|
||||
_push2(`</div></div><div class="media-picker"${_scopeId}><div class="drop-area overflow-y-auto"${_scopeId}><div class="media-grid pb-16"${_scopeId}>`);
|
||||
if (unref(original).url) {
|
||||
_push2(`<div class="media-container border-1 border-solid border-primary"${_scopeId}><img${ssrRenderAttrs(_temp1 = mergeProps({ class: "media-preview" }, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(original).url, loading: unref(img_gif), error: unref(img_gif) })))}${_scopeId}>${"textContent" in _temp1 ? ssrInterpolate(_temp1.textContent) : _temp1.innerHTML ?? ""}<button class="remove-btn"${_scopeId}>✖</button></div>`);
|
||||
} else {
|
||||
_push2(`<div class="add-media text-black"${_scopeId}><div${_scopeId}>${ssrInterpolate(unref(original).url)}</div><span${_scopeId}>+</span><div class="text-sm"${_scopeId}>${ssrInterpolate(unref(config).useString("mainImage"))}</div></div>`);
|
||||
}
|
||||
_push2(`<!--[-->`);
|
||||
ssrRenderList(unref(mediaFilesUrl), (media, index) => {
|
||||
_push2(`<div class="media-container"${_scopeId}>`);
|
||||
if (isVideo(media.url)) {
|
||||
_push2(`<video${ssrRenderAttr("src", media.url)} class="media-preview" controls${_scopeId}></video>`);
|
||||
} else {
|
||||
_push2(`<img${ssrRenderAttrs(_temp2 = mergeProps({
|
||||
src: media.url,
|
||||
class: "media-preview"
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: media.url, loading: unref(img_gif), error: unref(img_gif) })))}${_scopeId}>${"textContent" in _temp2 ? ssrInterpolate(_temp2.textContent) : _temp2.innerHTML ?? ""}`);
|
||||
}
|
||||
_push2(`<button class="remove-btn"${_scopeId}>✖</button></div>`);
|
||||
});
|
||||
_push2(`<!--]-->`);
|
||||
if (unref(mediaFilesUrl)?.length < maxFiles) {
|
||||
_push2(`<div class="add-media text-black"${_scopeId}><span${_scopeId}>+</span><div class="text-sm"${_scopeId}>${ssrInterpolate(unref(config).useString("subImage"))}</div></div>`);
|
||||
} else {
|
||||
_push2(`<!---->`);
|
||||
}
|
||||
_push2(`</div></div><input type="file" accept="image/*,video/*" multiple hidden${_scopeId}><input type="file" accept="image/*,video/*" hidden${_scopeId}></div></div></div>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("div", { class: "w-full h-full bg-black text-white" }, [
|
||||
createVNode("div", { class: "flex sticky top-0 w-full p-4 gap-8 justify-between items-center" }, [
|
||||
createVNode("div", { class: "flex gap-8 items-center" }, [
|
||||
createVNode("img", {
|
||||
src: _imports_0,
|
||||
alt: unref(config).appName.en,
|
||||
class: "cursor-pointer w-4",
|
||||
onClick: onBackPage
|
||||
}, null, 8, ["alt"]),
|
||||
createVNode("div", { class: "font-semibold text-lg" }, toDisplayString(unref(findEdit)(unref(route).name) ? unref(config).useString("editProduct") : unref(config).useString("newProduct")), 1)
|
||||
]),
|
||||
createVNode("div", {
|
||||
class: "text-primary text-sm cursor-pointer",
|
||||
onClick: goNextPage
|
||||
}, toDisplayString(unref(config).useString("next")), 1)
|
||||
]),
|
||||
createVNode("div", { class: "sm:flex gap-10" }, [
|
||||
createVNode("div", { class: "sticky bg-black top-60px z-1" }, [
|
||||
createVNode("div", { class: "aspect-square flex items-center justify-center sm:w-30vw" }, [
|
||||
unref(previewImg) ? (openBlock(), createBlock("div", {
|
||||
key: 0,
|
||||
class: "relative w-full"
|
||||
}, [
|
||||
withDirectives(createVNode("img", {
|
||||
alt: unref(config).appName.en,
|
||||
class: "w-full object-scale-down aspect-square"
|
||||
}, null, 8, ["alt"]), [
|
||||
[_directive_lazy, { src: unref(previewImg), loading: unref(img_gif), error: unref(img_gif) }]
|
||||
]),
|
||||
unref(previewImg) ? (openBlock(), createBlock("div", {
|
||||
key: 0,
|
||||
class: "flex absolute gap-2 right-5 bottom-5"
|
||||
}, [
|
||||
createVNode("div", {
|
||||
onClick: openCropper,
|
||||
class: "flex bg-black/80 items-center rounded gap-2 p-2"
|
||||
}, [
|
||||
createVNode(BasicIconOld, { icon: "vuesax-linear:crop" })
|
||||
]),
|
||||
createVNode("div", {
|
||||
onClick: editImage,
|
||||
class: "flex bg-black/80 items-center rounded gap-2 p-2"
|
||||
}, [
|
||||
createVNode(BasicIconOld, { icon: "vuesax-linear:gallery-edit" })
|
||||
])
|
||||
])) : createCommentVNode("", true),
|
||||
unref(previewImg) ? (openBlock(), createBlock("div", {
|
||||
key: 1,
|
||||
class: "flex absolute left-5 bottom-0"
|
||||
})) : createCommentVNode("", true)
|
||||
])) : unref(mediaFilesUrl)?.length === 0 ? (openBlock(), createBlock("p", {
|
||||
key: 1,
|
||||
class: "empty-state"
|
||||
}, toDisplayString(unref(config).useString("tapPlusToAdd")), 1)) : createCommentVNode("", true)
|
||||
])
|
||||
]),
|
||||
createVNode("div", { class: "media-picker" }, [
|
||||
createVNode("div", {
|
||||
class: "drop-area overflow-y-auto",
|
||||
onDragover: withModifiers(() => {
|
||||
}, ["prevent"]),
|
||||
onDrop: handleDrop
|
||||
}, [
|
||||
createVNode("div", { class: "media-grid pb-16" }, [
|
||||
unref(original).url ? (openBlock(), createBlock("div", {
|
||||
key: 0,
|
||||
class: "media-container border-1 border-solid border-primary",
|
||||
onClick: ($event) => showPreview(-1)
|
||||
}, [
|
||||
withDirectives(createVNode("img", { class: "media-preview" }, null, 512), [
|
||||
[_directive_lazy, { src: unref(original).url, loading: unref(img_gif), error: unref(img_gif) }]
|
||||
]),
|
||||
createVNode("button", {
|
||||
onClick: removeMainMedia,
|
||||
class: "remove-btn"
|
||||
}, "✖")
|
||||
], 8, ["onClick"])) : (openBlock(), createBlock("div", {
|
||||
key: 1,
|
||||
class: "add-media text-black",
|
||||
onClick: selectMainMedia
|
||||
}, [
|
||||
createVNode("div", null, toDisplayString(unref(original).url), 1),
|
||||
createVNode("span", null, "+"),
|
||||
createVNode("div", { class: "text-sm" }, toDisplayString(unref(config).useString("mainImage")), 1)
|
||||
])),
|
||||
(openBlock(true), createBlock(Fragment, null, renderList(unref(mediaFilesUrl), (media, index) => {
|
||||
return openBlock(), createBlock("div", {
|
||||
key: index,
|
||||
class: "media-container",
|
||||
onClick: ($event) => showPreview(index)
|
||||
}, [
|
||||
isVideo(media.url) ? (openBlock(), createBlock("video", {
|
||||
key: 0,
|
||||
src: media.url,
|
||||
class: "media-preview",
|
||||
controls: ""
|
||||
}, null, 8, ["src"])) : withDirectives((openBlock(), createBlock("img", {
|
||||
key: 1,
|
||||
src: media.url,
|
||||
class: "media-preview"
|
||||
}, null, 8, ["src"])), [
|
||||
[_directive_lazy, { src: media.url, loading: unref(img_gif), error: unref(img_gif) }]
|
||||
]),
|
||||
createVNode("button", {
|
||||
onClick: ($event) => removeMedia(index, media.index),
|
||||
class: "remove-btn"
|
||||
}, "✖", 8, ["onClick"])
|
||||
], 8, ["onClick"]);
|
||||
}), 128)),
|
||||
unref(mediaFilesUrl)?.length < maxFiles ? (openBlock(), createBlock("div", {
|
||||
key: 2,
|
||||
class: "add-media text-black",
|
||||
onClick: () => {
|
||||
imageSelected.value = -2;
|
||||
selectMedia();
|
||||
}
|
||||
}, [
|
||||
createVNode("span", null, "+"),
|
||||
createVNode("div", { class: "text-sm" }, toDisplayString(unref(config).useString("subImage")), 1)
|
||||
], 8, ["onClick"])) : createCommentVNode("", true)
|
||||
])
|
||||
], 40, ["onDragover"]),
|
||||
createVNode("input", {
|
||||
ref_key: "fileInput",
|
||||
ref: fileInput,
|
||||
type: "file",
|
||||
accept: "image/*,video/*",
|
||||
multiple: "",
|
||||
hidden: "",
|
||||
onChange: ($event) => handleFileUpload($event)
|
||||
}, null, 40, ["onChange"]),
|
||||
createVNode("input", {
|
||||
ref_key: "fileInputLimited",
|
||||
ref: fileInputLimited,
|
||||
type: "file",
|
||||
accept: "image/*,video/*",
|
||||
hidden: "",
|
||||
onChange: ($event) => handleFileUpload($event)
|
||||
}, null, 40, ["onChange"])
|
||||
])
|
||||
])
|
||||
])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
if (!unref(findEdit)(unref(route).name)) {
|
||||
_push(`<div class="fixed bottom-5 right-5 addStyle">`);
|
||||
_push(ssrRenderComponent(_component_a_radio_group, {
|
||||
value: type.value,
|
||||
"onUpdate:value": ($event) => type.value = $event,
|
||||
onChange: ($event) => unref(resetFormFields)(),
|
||||
"button-style": "solid"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-product-excel-inputProductExcel" }),
|
||||
value: "productExcel"
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`${ssrInterpolate(unref(config).useString("productExcel"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("productExcel")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(ssrRenderComponent(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-product-inputProduct" }),
|
||||
value: "product"
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`${ssrInterpolate(unref(config).useString("product2"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("product2")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(ssrRenderComponent(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-story-inputStory" }),
|
||||
value: "story"
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`${ssrInterpolate(unref(config).useString("story2"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("story2")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
} else {
|
||||
return [
|
||||
createVNode(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-product-excel-inputProductExcel" }),
|
||||
value: "productExcel"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createTextVNode(toDisplayString(unref(config).useString("productExcel")), 1)
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["onClick"]),
|
||||
createVNode(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-product-inputProduct" }),
|
||||
value: "product"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createTextVNode(toDisplayString(unref(config).useString("product2")), 1)
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["onClick"]),
|
||||
createVNode(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-story-inputStory" }),
|
||||
value: "story"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createTextVNode(toDisplayString(unref(config).useString("story2")), 1)
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["onClick"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
_push(ssrRenderComponent(_component_CropperModal, {
|
||||
visible: cropperVisible.value,
|
||||
"onUpdate:visible": ($event) => cropperVisible.value = $event,
|
||||
img: unref(previewImg),
|
||||
mode: "free",
|
||||
aspectRatio: 4 / 4,
|
||||
resizable: true,
|
||||
onCropped: unref(handleProductCropped)
|
||||
}, null, _parent));
|
||||
_push(`<!--]-->`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/add/product/inputMedia/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as _ };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,172 @@
|
||||
import { _ as __nuxt_component_3 } from './CropperModal-Bf6YuAAD.mjs';
|
||||
import { defineComponent, ref, watch, unref, withCtx, createTextVNode, toDisplayString, createVNode, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttr, ssrInterpolate, ssrRenderComponent, ssrRenderList } from 'vue/server-renderer';
|
||||
import { _ as _imports_0 } from './close_light-DbrEdRZI.mjs';
|
||||
import { u as useRouter$1, a as useConfigStore } from './server.mjs';
|
||||
import { m as mediaFilesUrl, p as previewImg, h as handleCropped } from './product-DqXo6FRa.mjs';
|
||||
import { B as BasicIconOld } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { _ as __nuxt_component_1, a as __nuxt_component_2 } from './RadioButton-CE-ccpG2.mjs';
|
||||
|
||||
const maxFiles = 10;
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const router = useRouter$1();
|
||||
const config = useConfigStore();
|
||||
ref(null);
|
||||
const type = ref("");
|
||||
const cropperVisible = ref(false);
|
||||
ref();
|
||||
watch(mediaFilesUrl, (files) => {
|
||||
if (mediaFilesUrl.value.length === 0) previewImg.value = "";
|
||||
else if (mediaFilesUrl.value.length === 1) previewImg.value = mediaFilesUrl.value[0];
|
||||
else {
|
||||
previewImg.value = files[files.length - 1];
|
||||
}
|
||||
});
|
||||
const isVideo = (file) => file.includes(".mp4") || file.includes(".mov") || file.includes("video");
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_a_radio_group = __nuxt_component_1;
|
||||
const _component_a_radio_button = __nuxt_component_2;
|
||||
const _component_CropperModal = __nuxt_component_3;
|
||||
_push(`<!--[--><div class="w-full h-screen bg-black text-white"><div class="flex w-full p-4 gap-8 justify-between items-center"><div class="flex gap-8 items-center"><img${ssrRenderAttr("src", _imports_0)}${ssrRenderAttr("alt", unref(config).appName.en)} class="cursor-pointer w-4"><div class="font-semibold text-lg">${ssrInterpolate(unref(config).useString("newStory"))}</div></div><div class="text-primary text-sm">${ssrInterpolate(unref(config).useString("next"))}</div></div><div class="w-full flex items-center justify-center relative">`);
|
||||
if (unref(previewImg)) {
|
||||
_push(`<img${ssrRenderAttr("src", unref(previewImg))}${ssrRenderAttr("alt", unref(config).appName.en)} class="w-full aspect-square object-contain">`);
|
||||
} else if (unref(mediaFilesUrl).length === 0) {
|
||||
_push(`<p class="empty-state">${ssrInterpolate(unref(config).useString("tapPlusToAdd"))}</p>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
if (unref(previewImg)) {
|
||||
_push(`<div class="flex absolute gap-2 right-5 bottom-5"><div class="flex bg-black/80 items-center rounded gap-2 p-2">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, { icon: "vuesax-linear:crop" }, null, _parent));
|
||||
_push(`</div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div><div class="media-picker"><div class="drop-area"><div class="media-grid"><!--[-->`);
|
||||
ssrRenderList(unref(mediaFilesUrl), (media, index) => {
|
||||
_push(`<div class="media-container">`);
|
||||
if (isVideo(media)) {
|
||||
_push(`<video${ssrRenderAttr("src", media)} class="media-preview" controls></video>`);
|
||||
} else {
|
||||
_push(`<img${ssrRenderAttr("src", media)} class="media-preview">`);
|
||||
}
|
||||
_push(`<button class="remove-btn">✖</button></div>`);
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
if (unref(mediaFilesUrl).length < maxFiles) {
|
||||
_push(`<div class="add-media text-black"><span>+</span></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div><input type="file" accept="image/*,video/*" multiple hidden></div></div><div class="absolute bottom-5 right-5 addStyle">`);
|
||||
_push(ssrRenderComponent(_component_a_radio_group, {
|
||||
value: type.value,
|
||||
"onUpdate:value": ($event) => type.value = $event,
|
||||
"button-style": "solid"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-product-excel-inputProductExcel" }),
|
||||
value: "productExcel"
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`${ssrInterpolate(unref(config).useString("productExcel"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("productExcel")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(ssrRenderComponent(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-product-inputProduct" }),
|
||||
value: "product"
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`${ssrInterpolate(unref(config).useString("product2"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("product2")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
_push2(ssrRenderComponent(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-story-inputStory" }),
|
||||
value: "story"
|
||||
}, {
|
||||
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
||||
if (_push3) {
|
||||
_push3(`${ssrInterpolate(unref(config).useString("story2"))}`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(toDisplayString(unref(config).useString("story2")), 1)
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent2, _scopeId));
|
||||
} else {
|
||||
return [
|
||||
createVNode(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-product-excel-inputProductExcel" }),
|
||||
value: "productExcel"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createTextVNode(toDisplayString(unref(config).useString("productExcel")), 1)
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["onClick"]),
|
||||
createVNode(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-product-inputProduct" }),
|
||||
value: "product"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createTextVNode(toDisplayString(unref(config).useString("product2")), 1)
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["onClick"]),
|
||||
createVNode(_component_a_radio_button, {
|
||||
onClick: ($event) => unref(router).push({ name: "add-story-inputStory" }),
|
||||
value: "story"
|
||||
}, {
|
||||
default: withCtx(() => [
|
||||
createTextVNode(toDisplayString(unref(config).useString("story2")), 1)
|
||||
]),
|
||||
_: 1
|
||||
}, 8, ["onClick"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
_push(ssrRenderComponent(_component_CropperModal, {
|
||||
visible: cropperVisible.value,
|
||||
"onUpdate:visible": ($event) => cropperVisible.value = $event,
|
||||
img: unref(previewImg),
|
||||
mode: "free",
|
||||
aspectRatio: 9 / 16,
|
||||
resizable: true,
|
||||
onCropped: unref(handleCropped)
|
||||
}, null, _parent));
|
||||
_push(`<!--]-->`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/add/story/inputMedia/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as _ };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,137 @@
|
||||
import { a as useConfigStore, aT as useRoute, aY as useRouter, _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, ref, reactive, computed, watch, nextTick, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { f as formFields, s as selectedFeatures, a as setItems, i as items, v as variants, b as updateMyAttrs, c as myAttributes, u as useProductStore } from './product-DqXo6FRa.mjs';
|
||||
import { differenceBy, cloneDeep } from 'lodash-es';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
emits: ["update:visible", "update:isEdit", "success"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
useConfigStore();
|
||||
const collections = ref(null);
|
||||
ref(false);
|
||||
ref(false);
|
||||
useRoute();
|
||||
useRouter();
|
||||
const loading = ref(false);
|
||||
const dragKey = ref(0);
|
||||
let selectedFeaturesLength = 0;
|
||||
reactive({
|
||||
height: "40px",
|
||||
lineHeight: "40px"
|
||||
});
|
||||
const childCollections = ref(null);
|
||||
computed(() => {
|
||||
const parentId = parentCollectionId.value;
|
||||
if (!parentId) return false;
|
||||
const parentCollection = collections.value?.find((c) => c.id === parentId);
|
||||
childCollections.value = parentCollection?.children;
|
||||
return parentCollection?.children?.length > 0;
|
||||
});
|
||||
const parentCollectionId = computed({
|
||||
get() {
|
||||
return formFields?.collections?.parent_id || formFields?.collections?.id;
|
||||
},
|
||||
set(newVal) {
|
||||
console.log(newVal, "cooool");
|
||||
formFields.collections.parent_id = newVal;
|
||||
formFields.collections.id = void 0;
|
||||
formFields.collection_id = newVal;
|
||||
}
|
||||
});
|
||||
computed(() => formFields.collection_id === 1 || formFields.collection_id === 2 || parentCollectionId.value == 1 || parentCollectionId.value == 2);
|
||||
computed({
|
||||
get() {
|
||||
if (formFields?.collections?.parent_id == formFields.collections?.id)
|
||||
return void 0;
|
||||
return formFields?.collections?.parent_id ? formFields?.collections.id : void 0;
|
||||
},
|
||||
set(newVal) {
|
||||
formFields.collections.id = newVal;
|
||||
formFields.collection_id = newVal;
|
||||
if (!formFields.collection_id)
|
||||
formFields.collection_id = formFields?.collections?.parent_id;
|
||||
}
|
||||
});
|
||||
watch(selectedFeatures, async (new_features, oldFeatures) => {
|
||||
if (new_features?.length > selectedFeaturesLength) {
|
||||
try {
|
||||
loading.value = true;
|
||||
await setItems(new_features);
|
||||
if (new_features[new_features.length - 1] != null) selectedFeaturesLength = selectedFeatures.value.length;
|
||||
dragKey.value++;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
} else {
|
||||
const deletedObject = differenceBy(oldFeatures, new_features);
|
||||
selectedFeaturesLength = selectedFeatures.value.length;
|
||||
const index = items.value.findIndex((x) => deletedObject[0] === x.id);
|
||||
if (index !== -1) {
|
||||
variants.value?.forEach((val) => {
|
||||
val.attribute_values[index] = null;
|
||||
});
|
||||
items.value.splice(index, 1);
|
||||
dragKey.value++;
|
||||
}
|
||||
}
|
||||
}, { deep: true });
|
||||
watch(
|
||||
items,
|
||||
(newValue) => {
|
||||
console.log("**********************");
|
||||
updateMyAttrs(items.value);
|
||||
},
|
||||
{ deep: true }
|
||||
);
|
||||
watch(() => formFields.variants, () => {
|
||||
variants.value = formFields.variants;
|
||||
}, { deep: true });
|
||||
watch(() => formFields.variants?.map((v) => v?.attribute_values), () => {
|
||||
nextTick(() => {
|
||||
if (formRef.value && (formFields.variants?.length ?? 0) > 0 && myAttributes.value?.length > 0) {
|
||||
formFields.variants?.forEach((variant, variantIndex) => {
|
||||
if (!variant) return;
|
||||
const attrValues = variant.attribute_values || {};
|
||||
myAttributes.value.forEach((attr, attrIndex) => {
|
||||
if (!attr?.valueKey) return;
|
||||
["variants", variantIndex, "attribute_values", attr.valueKey];
|
||||
const currentValue = attrValues[attr.valueKey];
|
||||
if (currentValue != null && currentValue !== "" && currentValue !== void 0) {
|
||||
for (let i = 0; i < attrIndex; i++) {
|
||||
const prevAttr = myAttributes.value[i];
|
||||
if (!prevAttr?.valueKey) continue;
|
||||
const prevFieldName = ["variants", variantIndex, "attribute_values", prevAttr.valueKey];
|
||||
formRef.value.validateFields([prevFieldName]).catch(() => {
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}, { deep: true });
|
||||
useProductStore();
|
||||
const formRef = ref();
|
||||
ref(["0"]);
|
||||
cloneDeep(formFields);
|
||||
ref(false);
|
||||
ref([]);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/add/product/information/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as _ };
|
||||
@@ -0,0 +1,63 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-Cqd7hqps.mjs';
|
||||
import { aM as useRoute$1, aZ as useRouteStore } from './server.mjs';
|
||||
import './CropperModal-Bf6YuAAD.mjs';
|
||||
import './BasicButton-7YIRCRg8.mjs';
|
||||
import '@ant-design/icons-vue';
|
||||
import './BasicIconOld-Booq7UXp.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import 'throttle-debounce';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import 'vue-advanced-cropper';
|
||||
import './close_light-DbrEdRZI.mjs';
|
||||
import '@capacitor/camera';
|
||||
import '@capacitor/core';
|
||||
import './product-DqXo6FRa.mjs';
|
||||
import 'pinia';
|
||||
import 'lodash-es';
|
||||
import './post_loading-CMOcYm9B.mjs';
|
||||
import './RadioButton-CE-ccpG2.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './Checkbox-BqbMrYFp.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useRoute$1();
|
||||
useRouteStore();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/edit/product/[id]/inputProduct/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,24 @@
|
||||
import { defineComponent, resolveComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { u as useRouter$1, aM as useRoute$1 } from './server.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useRouter$1();
|
||||
useRoute$1();
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_RouterView = resolveComponent("RouterView");
|
||||
_push(ssrRenderComponent(_component_RouterView, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/add/story/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as _ };
|
||||
@@ -0,0 +1,21 @@
|
||||
import { defineComponent, createVNode, resolveDynamicComponent, unref, useSSRContext } from 'vue';
|
||||
import { ssrRenderVNode } from 'vue/server-renderer';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const MyComponent = null;
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
ssrRenderVNode(_push, createVNode(resolveDynamicComponent(unref(MyComponent)), _attrs, null), _parent);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/add/product/excel/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,172 @@
|
||||
import { defineComponent, ref, computed, nextTick, withAsyncContext, watch, resolveDirective, unref, mergeProps, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrRenderList, ssrGetDirectiveProps, ssrInterpolate, ssrRenderAttr, ssrRenderStyle } from 'vue/server-renderer';
|
||||
import { S as SearchButton } from './SearchButton-bvprDE_g.mjs';
|
||||
import { l as loadGray, _ as __nuxt_component_0 } from './gray-wOBznZcb.mjs';
|
||||
import { b as getStoreSearchPosts } from './media-CiMHc-Ka.mjs';
|
||||
import { u as useRouter$1, a as useConfigStore, m as useIntersectionObserver } from './server.mjs';
|
||||
import { u as useAsyncData } from './asyncData-DVPmuEBB.mjs';
|
||||
import 'vue-content-loader';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
import 'perfect-debounce';
|
||||
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const router = useRouter$1();
|
||||
const posts = ref([]);
|
||||
const loading = ref(false);
|
||||
const videoThumbnails = ref({});
|
||||
const seller = computed(() => config.sellerConfig?.store);
|
||||
const config = useConfigStore();
|
||||
const endPage = ref(false);
|
||||
const currentPage = ref(0);
|
||||
const limit = ref(15);
|
||||
const total = ref(0);
|
||||
const observer = ref();
|
||||
useIntersectionObserver(
|
||||
observer,
|
||||
async ([{ isIntersecting }]) => {
|
||||
if (isIntersecting && !loading.value && !endPage.value) {
|
||||
loading.value = true;
|
||||
const nextPage = currentPage.value + 1;
|
||||
setTimeout(async () => {
|
||||
const res = await loadPosts(nextPage);
|
||||
if (res.rows?.length) {
|
||||
posts.value.push(...res.rows);
|
||||
currentPage.value = nextPage;
|
||||
}
|
||||
}, 100);
|
||||
if (posts.value?.length >= total.value) {
|
||||
endPage.value = true;
|
||||
}
|
||||
loading.value = false;
|
||||
}
|
||||
},
|
||||
{
|
||||
threshold: 0.2,
|
||||
// فقط وقتی 20٪ عنصر دیده بشه
|
||||
rootMargin: "0px 0px 200px 0px"
|
||||
// وقتی 200px به پایین نزدیک شد
|
||||
}
|
||||
);
|
||||
const loadPosts = async (page = 1) => {
|
||||
try {
|
||||
const sellerId = seller.value?.user_id;
|
||||
await nextTick();
|
||||
const res = await getStoreSearchPosts(sellerId, {
|
||||
page,
|
||||
limit: limit.value,
|
||||
filters: []
|
||||
});
|
||||
return res;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
return { data: [], count: 0 };
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
const { data } = ([__temp, __restore] = withAsyncContext(() => useAsyncData("explore", async () => {
|
||||
return loadPosts(1);
|
||||
})), __temp = await __temp, __restore(), __temp);
|
||||
watch(data, () => {
|
||||
if (data.value) {
|
||||
posts.value = data.value.rows;
|
||||
total.value = data.value.count;
|
||||
currentPage.value = 1;
|
||||
if (posts.value?.length >= total.value) endPage.value = true;
|
||||
}
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _directive_lazy = resolveDirective("lazy");
|
||||
let _temp0;
|
||||
_push(`<div${ssrRenderAttrs(_attrs)}><div class="absolute top-0 w-inherit right-0 left-0 sm:w-70vw sm:justify-self-center"><div class="flex justify-between w-full p-4">`);
|
||||
_push(ssrRenderComponent(SearchButton, {
|
||||
class: "w-full mt-2",
|
||||
onClick: ($event) => unref(router).push({ name: "search-main" })
|
||||
}, null, _parent));
|
||||
_push(`</div><div class="h-90vh overflow-y-auto pb-5vh">`);
|
||||
if (!loading.value) {
|
||||
_push(`<div class="w-full grid grid-cols-3 sm:grid-cols-5 gap-2px"><!--[-->`);
|
||||
ssrRenderList(posts.value, (post, i) => {
|
||||
_push(`<div class="w-full aspect-square relative">`);
|
||||
if (post.files?.length) {
|
||||
_push(`<!--[-->`);
|
||||
if (post.files[0].type === "image") {
|
||||
_push(`<img${ssrRenderAttrs(_temp0 = mergeProps({
|
||||
class: "w-full h-full object-cover",
|
||||
alt: unref(config).appName.en
|
||||
}, ssrGetDirectiveProps(_ctx, _directive_lazy, { src: unref(config).useDataStorage(post.files[0].url), loading: unref(loadGray), error: unref(loadGray) })))}>${"textContent" in _temp0 ? ssrInterpolate(_temp0.textContent) : _temp0.innerHTML ?? ""}`);
|
||||
} else if (post.files[0].type === "video") {
|
||||
_push(`<div class="relative w-full h-full"><video${ssrRenderAttr("src", post.files[0].url)} class="hidden"></video><img${ssrRenderAttr("src", videoThumbnails.value[post.files[0].url])} class="w-full h-full object-cover"${ssrRenderAttr("alt", unref(config).appName.en)}><div class="absolute inset-0 flex items-center justify-center bg-black bg-opacity-30"><svg class="w-12 h-12 text-white" fill="currentColor" viewBox="0 0 24 24"><path d="M8 5v14l11-7z"></path></svg></div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<!--]-->`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
});
|
||||
_push(`<!--]--></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<div style="${ssrRenderStyle(!loading.value ? null : { display: "none" })}" class="w-full opacity-0 relative"> load </div>`);
|
||||
if (loading.value) {
|
||||
_push(ssrRenderComponent(__nuxt_component_0, null, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("views/base/pages/search/explore/index.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/search/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,457 @@
|
||||
import { defineComponent, ref, reactive, mergeProps, unref, withCtx, createVNode, openBlock, createBlock, createTextVNode, toDisplayString, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { u as useRouter$1, a as useConfigStore, b as useUserStore, f as generateOtp, d as api$1, v as verifyOtp, c as setToken, s as supabase, i as setPassword, j as setBirthday, k as setNames } from './server.mjs';
|
||||
import OtpInput from 'vue3-otp-input';
|
||||
import { B as BasicInput } from './BasicInput-CgQV_gT5.mjs';
|
||||
import { B as BaseDatePicker, a as BaseDatePickerJalali } from './BaseDatePicker-D3_e-ycp.mjs';
|
||||
import { B as BasicButton } from './BasicButton-7YIRCRg8.mjs';
|
||||
import { B as BasicIconOld } from './BasicIconOld-Booq7UXp.mjs';
|
||||
import { _ as __nuxt_component_1 } from './FormItem-Uo-Qw9vC.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
import './usePrice-CFcNV1RQ.mjs';
|
||||
import './index-D4HrLPqa.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './index-BTlbWWOl.mjs';
|
||||
import 'lodash-es/isPlainObject.js';
|
||||
import 'resize-observer-polyfill';
|
||||
import './index-DN2Eqyc3.mjs';
|
||||
import 'dom-align';
|
||||
import 'moment-jalaali';
|
||||
import 'dayjalali';
|
||||
import './index-CnnQbQCE.mjs';
|
||||
import './useMergedState-BZEfJ8Fl.mjs';
|
||||
import './move-DCvQW68K.mjs';
|
||||
import './shallowequal-CJsWvZb3.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import 'lodash-es/cloneDeep.js';
|
||||
import 'async-validator';
|
||||
import 'lodash-es/find.js';
|
||||
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const router = useRouter$1();
|
||||
const step = ref("mobile");
|
||||
const config = useConfigStore();
|
||||
const isBack = ref(false);
|
||||
const loading = ref(false);
|
||||
const user = useUserStore();
|
||||
const form = reactive({
|
||||
mobile: void 0,
|
||||
otp: void 0,
|
||||
password: void 0,
|
||||
first_name: void 0,
|
||||
last_name: void 0,
|
||||
birthday: void 0,
|
||||
agree: void 0
|
||||
});
|
||||
function handleOnChange(value) {
|
||||
}
|
||||
async function handleOnComplete(value) {
|
||||
form.otp = value;
|
||||
}
|
||||
const goNext = async () => {
|
||||
try {
|
||||
loading.value = true;
|
||||
if (step.value === "mobile") {
|
||||
const res = await generateOtp(form.mobile, "signup");
|
||||
if (res?.user?.id) {
|
||||
api$1.error(config.useString("userHaveAccount"));
|
||||
router.push({
|
||||
name: "auth-login"
|
||||
});
|
||||
return;
|
||||
}
|
||||
isBack.value = false;
|
||||
step.value = "otp";
|
||||
} else if (step.value === "otp") {
|
||||
const res = await verifyOtp(form.mobile, form.otp);
|
||||
console.log("res ===>", res);
|
||||
setToken(res.session.access_token);
|
||||
await supabase.auth.setSession(res.session);
|
||||
user.getUserInfo();
|
||||
isBack.value = false;
|
||||
step.value = "password";
|
||||
} else if (step.value === "password") {
|
||||
if (form.password.length < 6) {
|
||||
api$1.error(config.useString("minPassIs6"));
|
||||
return;
|
||||
}
|
||||
const res = await setPassword(form.password);
|
||||
isBack.value = false;
|
||||
step.value = "birthday";
|
||||
} else if (step.value === "birthday") {
|
||||
const res = await setBirthday(form.birthday);
|
||||
isBack.value = false;
|
||||
step.value = "name";
|
||||
} else if (step.value === "name") {
|
||||
const res = await setNames(form.first_name, form.last_name);
|
||||
isBack.value = false;
|
||||
step.value = "agree";
|
||||
} else if (step.value === "agree") {
|
||||
await router.push({
|
||||
name: "home"
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
console.log("e ===>", e);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_a_form_item = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: "p-4 bgRegister w-full h-screen"
|
||||
}, _attrs))}><div class="font-semibold text-2xl"><div class="absolute bottom-0 right-0 left-0 w-full text-center text-sm">`);
|
||||
if (step.value === "mobile") {
|
||||
_push(`<div class="pb-5 text-primary cursor-pointer">${ssrInterpolate(unref(config).useString("iHaveAccount"))}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
if (step.value === "mobile") {
|
||||
_push(`<div class="mt-5">${ssrInterpolate(unref(config).useString("registerMobile"))}</div>`);
|
||||
} else if (step.value === "otp") {
|
||||
_push(`<div><div class="flex items-center justify-left">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:arrow-left-1",
|
||||
class: "mb-5 font-semibold cursor-pointer",
|
||||
size: "26",
|
||||
onClick: ($event) => {
|
||||
isBack.value = true;
|
||||
step.value = "mobile";
|
||||
}
|
||||
}, null, _parent));
|
||||
_push(`</div> ${ssrInterpolate(unref(config).useString("registerOtp"))}</div>`);
|
||||
} else if (step.value === "password") {
|
||||
_push(`<div><div class="flex items-center justify-left">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:arrow-left-1",
|
||||
class: "mb-5 font-semibold cursor-pointer",
|
||||
size: "26",
|
||||
onClick: ($event) => {
|
||||
isBack.value = true;
|
||||
step.value = "mobile";
|
||||
}
|
||||
}, null, _parent));
|
||||
_push(`</div> ${ssrInterpolate(unref(config).useString("registerPassword"))}</div>`);
|
||||
} else if (step.value === "birthday") {
|
||||
_push(`<div><div class="flex items-center justify-left">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:arrow-left-1",
|
||||
class: "mb-5 font-semibold cursor-pointer",
|
||||
size: "26",
|
||||
onClick: ($event) => {
|
||||
isBack.value = true;
|
||||
step.value = "password";
|
||||
}
|
||||
}, null, _parent));
|
||||
_push(`</div> ${ssrInterpolate(unref(config).useString("registerBirthday"))}</div>`);
|
||||
} else if (step.value === "name") {
|
||||
_push(`<div><div class="flex items-center justify-left">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:arrow-left-1",
|
||||
class: "mb-5 font-semibold cursor-pointer",
|
||||
size: "26",
|
||||
onClick: ($event) => {
|
||||
isBack.value = true;
|
||||
step.value = "birthday";
|
||||
}
|
||||
}, null, _parent));
|
||||
_push(`</div> ${ssrInterpolate(unref(config).useString("registerName"))}</div>`);
|
||||
} else if (step.value === "agree") {
|
||||
_push(`<div><div class="flex items-center justify-left">`);
|
||||
_push(ssrRenderComponent(BasicIconOld, {
|
||||
icon: "vuesax-linear:arrow-left-1",
|
||||
class: "mb-5 font-semibold cursor-pointer",
|
||||
size: "26",
|
||||
onClick: ($event) => {
|
||||
isBack.value = true;
|
||||
step.value = "name";
|
||||
}
|
||||
}, null, _parent));
|
||||
_push(`</div> ${ssrInterpolate(unref(config).useString("registerAgree"))}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div><div class="mt-2">`);
|
||||
if (step.value === "mobile") {
|
||||
_push(`<div>${ssrInterpolate(unref(config).useString("registerMobileDescription1"))}</div>`);
|
||||
} else if (step.value === "otp") {
|
||||
_push(`<div>${ssrInterpolate(unref(config).useString("registerOtpDescription", form.mobile))}</div>`);
|
||||
} else if (step.value === "password") {
|
||||
_push(`<div>${ssrInterpolate(unref(config).useString("registerPasswordDescription"))}</div>`);
|
||||
} else if (step.value === "birthday") {
|
||||
_push(`<div>${ssrInterpolate(unref(config).useString("registerBirthdayDescription"))}</div>`);
|
||||
} else if (step.value === "name") {
|
||||
_push(`<div>${ssrInterpolate(unref(config).useString("registerNameDescription"))}</div>`);
|
||||
} else if (step.value === "agree") {
|
||||
_push(`<div class="text-justify">${ssrInterpolate(unref(config).useString("registerAgreeDescription"))}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div><div class="mt-2">`);
|
||||
if (step.value === "mobile") {
|
||||
_push(`<div>`);
|
||||
_push(ssrRenderComponent(_component_a_form_item, {
|
||||
name: "mobile"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(BasicInput, {
|
||||
value: form.mobile,
|
||||
"onUpdate:value": ($event) => form.mobile = $event,
|
||||
size: "large",
|
||||
"place-holder": unref(config).useString("phone")
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
return [createVNode(BasicInput, {
|
||||
value: form.mobile,
|
||||
"onUpdate:value": ($event) => form.mobile = $event,
|
||||
size: "large",
|
||||
"place-holder": unref(config).useString("phone")
|
||||
}, null, 8, ["value", "onUpdate:value", "place-holder"])];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`<div>${ssrInterpolate(unref(config).useString("registerMobileDescription2"))}</div></div>`);
|
||||
} else if (step.value === "otp") {
|
||||
_push(`<div>`);
|
||||
_push(ssrRenderComponent(_component_a_form_item, {
|
||||
name: "otp"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(unref(OtpInput), {
|
||||
style: {
|
||||
"direction": "ltr"
|
||||
},
|
||||
class: "mt-10 justify-center",
|
||||
ref: "otpInput",
|
||||
autocomplete: "one-time-code",
|
||||
"input-classes": "otp-input",
|
||||
separator: "",
|
||||
"num-inputs": 5,
|
||||
"should-auto-focus": true,
|
||||
"is-input-num": true,
|
||||
onOnChange: handleOnChange,
|
||||
onOnComplete: handleOnComplete
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
return [createVNode(unref(OtpInput), {
|
||||
style: {
|
||||
"direction": "ltr"
|
||||
},
|
||||
class: "mt-10 justify-center",
|
||||
ref: "otpInput",
|
||||
autocomplete: "one-time-code",
|
||||
"input-classes": "otp-input",
|
||||
separator: "",
|
||||
"num-inputs": 5,
|
||||
"should-auto-focus": true,
|
||||
"is-input-num": true,
|
||||
onOnChange: handleOnChange,
|
||||
onOnComplete: handleOnComplete
|
||||
}, null, 512)];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else if (step.value === "password") {
|
||||
_push(`<div>`);
|
||||
_push(ssrRenderComponent(_component_a_form_item, {
|
||||
name: "password"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(BasicInput, {
|
||||
value: form.password,
|
||||
"onUpdate:value": ($event) => form.password = $event,
|
||||
"is-password": "",
|
||||
size: "large",
|
||||
"place-holder": unref(config).useString("password")
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
return [createVNode(BasicInput, {
|
||||
value: form.password,
|
||||
"onUpdate:value": ($event) => form.password = $event,
|
||||
"is-password": "",
|
||||
size: "large",
|
||||
"place-holder": unref(config).useString("password")
|
||||
}, null, 8, ["value", "onUpdate:value", "place-holder"])];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else if (step.value === "birthday") {
|
||||
_push(`<div>`);
|
||||
_push(ssrRenderComponent(_component_a_form_item, {
|
||||
name: "birthday"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
if (unref(config).lang === "en" && unref(config).APP_Milady_Date) {
|
||||
_push2(ssrRenderComponent(unref(BaseDatePicker), {
|
||||
value: form.birthday,
|
||||
"onUpdate:value": ($event) => form.birthday = $event,
|
||||
inputReadOnly: "",
|
||||
placeHolder: unref(config).useString("birthdate"),
|
||||
size: "large"
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
_push2(ssrRenderComponent(unref(BaseDatePickerJalali), {
|
||||
value: form.birthday,
|
||||
"onUpdate:value": ($event) => form.birthday = $event,
|
||||
inputReadOnly: "",
|
||||
placeHolder: unref(config).useString("birthdate"),
|
||||
size: "large"
|
||||
}, null, _parent2, _scopeId));
|
||||
}
|
||||
} else {
|
||||
return [unref(config).lang === "en" && unref(config).APP_Milady_Date ? (openBlock(), createBlock(unref(BaseDatePicker), {
|
||||
key: 0,
|
||||
value: form.birthday,
|
||||
"onUpdate:value": ($event) => form.birthday = $event,
|
||||
inputReadOnly: "",
|
||||
placeHolder: unref(config).useString("birthdate"),
|
||||
size: "large"
|
||||
}, null, 8, ["value", "onUpdate:value", "placeHolder"])) : (openBlock(), createBlock(unref(BaseDatePickerJalali), {
|
||||
key: 1,
|
||||
value: form.birthday,
|
||||
"onUpdate:value": ($event) => form.birthday = $event,
|
||||
inputReadOnly: "",
|
||||
placeHolder: unref(config).useString("birthdate"),
|
||||
size: "large"
|
||||
}, null, 8, ["value", "onUpdate:value", "placeHolder"]))];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else if (step.value === "name") {
|
||||
_push(`<div>`);
|
||||
_push(ssrRenderComponent(_component_a_form_item, {
|
||||
name: "first_name"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(BasicInput, {
|
||||
placeHolder: unref(config).useString("firstNamePlaceholder"),
|
||||
value: form.first_name,
|
||||
"onUpdate:value": ($event) => form.first_name = $event,
|
||||
size: "large"
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
return [createVNode(BasicInput, {
|
||||
placeHolder: unref(config).useString("firstNamePlaceholder"),
|
||||
value: form.first_name,
|
||||
"onUpdate:value": ($event) => form.first_name = $event,
|
||||
size: "large"
|
||||
}, null, 8, ["placeHolder", "value", "onUpdate:value"])];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(ssrRenderComponent(_component_a_form_item, {
|
||||
name: "last_name"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(ssrRenderComponent(BasicInput, {
|
||||
placeHolder: unref(config).useString("lastNamePlaceholder"),
|
||||
value: form.last_name,
|
||||
"onUpdate:value": ($event) => form.last_name = $event,
|
||||
size: "large"
|
||||
}, null, _parent2, _scopeId));
|
||||
} else {
|
||||
return [createVNode(BasicInput, {
|
||||
placeHolder: unref(config).useString("lastNamePlaceholder"),
|
||||
value: form.last_name,
|
||||
"onUpdate:value": ($event) => form.last_name = $event,
|
||||
size: "large"
|
||||
}, null, 8, ["placeHolder", "value", "onUpdate:value"])];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div>`);
|
||||
} else if (step.value === "agree") {
|
||||
_push(`<div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(ssrRenderComponent(BasicButton, {
|
||||
block: "",
|
||||
class: "mt-5",
|
||||
type: "primary",
|
||||
onClick: goNext,
|
||||
loading: loading.value,
|
||||
curve: "",
|
||||
size: "large"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`${ssrInterpolate(unref(config).useString("next"))}`);
|
||||
} else {
|
||||
return [createTextVNode(toDisplayString(unref(config).useString("next")), 1)];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div><div></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("views/register/index.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/auth/register/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-DVGhzw_E.mjs';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/add/story/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/message/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,87 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-CwDNc1so.mjs';
|
||||
import '@ant-design/icons-vue';
|
||||
import './BasicIconOld-Booq7UXp.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import 'unhead/utils';
|
||||
import './empty_user-DSxcM_ac.mjs';
|
||||
import './inputRules-Cr4Uiro2.mjs';
|
||||
import './BasicInput-CgQV_gT5.mjs';
|
||||
import './usePrice-CFcNV1RQ.mjs';
|
||||
import './index-D4HrLPqa.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './index-BTlbWWOl.mjs';
|
||||
import 'lodash-es/isPlainObject.js';
|
||||
import 'resize-observer-polyfill';
|
||||
import './index-DN2Eqyc3.mjs';
|
||||
import 'dom-align';
|
||||
import './BaseDatePicker-D3_e-ycp.mjs';
|
||||
import 'moment-jalaali';
|
||||
import 'dayjalali';
|
||||
import './index-CnnQbQCE.mjs';
|
||||
import './useMergedState-BZEfJ8Fl.mjs';
|
||||
import './move-DCvQW68K.mjs';
|
||||
import './shallowequal-CJsWvZb3.mjs';
|
||||
import './index-C5WgqxkU.mjs';
|
||||
import './close_light-DbrEdRZI.mjs';
|
||||
import './FormItem-Uo-Qw9vC.mjs';
|
||||
import 'lodash-es/cloneDeep.js';
|
||||
import 'async-validator';
|
||||
import 'lodash-es/find.js';
|
||||
import 'lodash-es/isEqual.js';
|
||||
import 'compute-scroll-into-view';
|
||||
import 'lodash-es/intersection.js';
|
||||
import 'lodash-es/debounce.js';
|
||||
import 'lodash-es/omit.js';
|
||||
import './index-zsqPNrGJ.mjs';
|
||||
import '@vueuse/gesture';
|
||||
import '@headlessui/vue';
|
||||
import 'framesync';
|
||||
import 'popmotion';
|
||||
import 'style-value-types';
|
||||
import './BasicButton-7YIRCRg8.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import './InstaInput-Cs7_qhi7.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/user/edit/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,386 @@
|
||||
import { defineComponent, computed, mergeProps, unref, ref, watch, withAsyncContext, provide, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrInterpolate, ssrRenderClass, ssrRenderList, ssrRenderStyle } from 'vue/server-renderer';
|
||||
import { a as useConfigStore, u as useRouter$1, b as useUserStore, o as useCartStore, p as usePriceStore, _ as __nuxt_component_0$1, m as useIntersectionObserver, n as getToken, d as api$1 } from './server.mjs';
|
||||
import { L as Logo } from './Logo-CS_PsVSS.mjs';
|
||||
import { a as _sfc_main$5, C as CommentAddEdit, _ as _sfc_main$8, d as deletePostLike, c as createPostLike } from './moreOptionProduct-CrrGHZLj.mjs';
|
||||
import { P as Post, _ as _sfc_main$7 } from './PostCardSkeleton-CeuWkTWh.mjs';
|
||||
import { d as deleteSave, c as createSave } from './save-3yOnAiJS.mjs';
|
||||
import { u as useProductStore } from './product-DqXo6FRa.mjs';
|
||||
import { u as useMediaStore } from './media-Cj7oyS0P.mjs';
|
||||
import { u as useAsyncData } from './asyncData-DVPmuEBB.mjs';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { _ as _sfc_main$6 } from './FullScreenStories-Cwtzgmu3.mjs';
|
||||
import { U as UserProfilePic } from './UserProfilePic-CSSFM-Xe.mjs';
|
||||
import { u as usePrice } from './usePrice-CFcNV1RQ.mjs';
|
||||
import { _ as __nuxt_component_2 } from './index-CRP3RHmx.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
import './index-zsqPNrGJ.mjs';
|
||||
import '@vueuse/gesture';
|
||||
import '@headlessui/vue';
|
||||
import 'framesync';
|
||||
import 'popmotion';
|
||||
import 'style-value-types';
|
||||
import './BasicButton-7YIRCRg8.mjs';
|
||||
import './BasicIconOld-Booq7UXp.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import './index-DN2Eqyc3.mjs';
|
||||
import 'dom-align';
|
||||
import './index-CQMiaHEh.mjs';
|
||||
import './shallowequal-CJsWvZb3.mjs';
|
||||
import 'lodash-es/uniq.js';
|
||||
import './index-D4HrLPqa.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './index-BTlbWWOl.mjs';
|
||||
import 'lodash-es/isPlainObject.js';
|
||||
import 'resize-observer-polyfill';
|
||||
import './useDateTime-iTLoRLEX.mjs';
|
||||
import 'moment';
|
||||
import 'moment-timezone';
|
||||
import 'moment-jalaali';
|
||||
import 'date-fns';
|
||||
import 'date-fns/locale';
|
||||
import './empty_user-DSxcM_ac.mjs';
|
||||
import './like-D4L8S2C_.mjs';
|
||||
import 'vue-content-loader';
|
||||
import 'swiper/vue';
|
||||
import 'swiper/modules';
|
||||
import './post_loading-CMOcYm9B.mjs';
|
||||
import './media-CiMHc-Ka.mjs';
|
||||
import 'perfect-debounce';
|
||||
import './BasicInput-CgQV_gT5.mjs';
|
||||
import '../_/CheckOutlined.mjs';
|
||||
import './useRefs-BHKrVg4I.mjs';
|
||||
|
||||
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
||||
__name: "InstallButton",
|
||||
__ssrInlineRender: true,
|
||||
emits: ["show"],
|
||||
setup(__props, { emit: __emit }) {
|
||||
const emits = __emit;
|
||||
const showInstallButton = ref(false);
|
||||
ref(null);
|
||||
watch(showInstallButton, (n) => {
|
||||
emits("show", n);
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0$1;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$4 = _sfc_main$4.setup;
|
||||
_sfc_main$4.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/InstallButton.vue");
|
||||
return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_0 = Object.assign(_sfc_main$4, { __name: "InstallButton" });
|
||||
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
||||
__name: "Posts",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
userPostScroll: {},
|
||||
scrollSave: {}
|
||||
},
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const props = __props;
|
||||
const user = useUserStore();
|
||||
const media = useMediaStore();
|
||||
const percent = useProductStore();
|
||||
const router = useRouter$1();
|
||||
const config = useConfigStore();
|
||||
ref(100);
|
||||
const { posts, endPage } = storeToRefs(media);
|
||||
ref(0);
|
||||
const loading = ref(false);
|
||||
const addLikeLoading = ref(false);
|
||||
const commentPostId = ref();
|
||||
const commentVisible = ref(false);
|
||||
const optionVisible = ref(false);
|
||||
const optionPostId = ref();
|
||||
const ownerPostId = ref();
|
||||
computed(() => props.userPostScroll === "userPostScroll");
|
||||
const present = computed(() => percent.percentUpload);
|
||||
function handleLike(isLiked, id) {
|
||||
try {
|
||||
addLikeLoading.value = true;
|
||||
if (getToken()) {
|
||||
if (isLiked) {
|
||||
deletePostLike(id);
|
||||
const index = posts.value.findIndex((x) => x.id === id);
|
||||
posts.value[index]?.likes.splice(posts.value[index].likes?.findIndex((y) => y.user_id === user.user.id));
|
||||
} else {
|
||||
createPostLike(id);
|
||||
const index = posts.value.findIndex((x) => x.id === id);
|
||||
posts.value[index]?.likes.push({
|
||||
product_id: id,
|
||||
user_id: user.user.id
|
||||
});
|
||||
}
|
||||
} else {
|
||||
router.push({ name: "auth-login" });
|
||||
api$1.warn(config.useString("pleaseLoginOrRegister"));
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
} finally {
|
||||
addLikeLoading.value = false;
|
||||
}
|
||||
}
|
||||
function addCommentId(id) {
|
||||
posts.value[posts.value.findIndex((x) => x.id === commentPostId.value)]?.comments.push({ id });
|
||||
}
|
||||
function deleteCommentId() {
|
||||
posts.value[posts.value.findIndex((x) => x.id === commentPostId.value)]?.comments.splice(0, 1);
|
||||
}
|
||||
function handleSave(isSaved, id) {
|
||||
if (getToken()) {
|
||||
if (isSaved) {
|
||||
deleteSave(id);
|
||||
const index = posts.value.findIndex((x) => x.id === id);
|
||||
posts.value[index]?.saved.splice(posts.value[index].saved?.findIndex((y) => y.user_id === user.user.id));
|
||||
} else {
|
||||
createSave(id);
|
||||
const index = posts.value.findIndex((x) => x.id === id);
|
||||
posts.value[index]?.saved.push({
|
||||
product_id: id,
|
||||
user_id: user.user.id
|
||||
});
|
||||
}
|
||||
} else {
|
||||
router.push({ name: "auth-login" });
|
||||
api$1.warn(config.useString("pleaseLoginOrRegister"));
|
||||
}
|
||||
}
|
||||
function openOption(id) {
|
||||
optionPostId.value = id;
|
||||
optionVisible.value = true;
|
||||
}
|
||||
function openComment(id, owner_id) {
|
||||
commentPostId.value = id;
|
||||
commentVisible.value = true;
|
||||
ownerPostId.value = owner_id;
|
||||
}
|
||||
provide("ownerPostId", ownerPostId);
|
||||
const { data } = ([__temp, __restore] = withAsyncContext(() => useAsyncData("posts", () => media.loadPosts(1))), __temp = await __temp, __restore(), __temp);
|
||||
const observer = ref();
|
||||
useIntersectionObserver(observer, async (entries) => {
|
||||
const entry = entries[0];
|
||||
if (!entry) return;
|
||||
if (entry.isIntersecting && !media.loading && !media.endPage) {
|
||||
await media.loadPosts(media.currentPage + 1);
|
||||
}
|
||||
});
|
||||
computed(() => router.currentRoute.value.query.target || null);
|
||||
watch(present, () => {
|
||||
if (present.value == 100) {
|
||||
media.reset();
|
||||
media.loadPosts(1);
|
||||
}
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<!--[--><div class="mt-5 pb-5vh" data-v-06dbf9e8><!--[-->`);
|
||||
ssrRenderList(unref(posts), (post, index) => {
|
||||
_push(ssrRenderComponent(Post, {
|
||||
onOpenOption: openOption,
|
||||
onOpenComment: openComment,
|
||||
onHandleLike: handleLike,
|
||||
onHandleSave: handleSave,
|
||||
index,
|
||||
post,
|
||||
key: index,
|
||||
scrollSave: _ctx.scrollSave,
|
||||
"add-like-loading": addLikeLoading.value
|
||||
}, null, _parent));
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
if (loading.value) {
|
||||
_push(ssrRenderComponent(_sfc_main$7, null, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<div style="${ssrRenderStyle(!loading.value ? null : { display: "none" })}" class="w-full opacity-0 relative" data-v-06dbf9e8> load </div></div>`);
|
||||
_push(ssrRenderComponent(CommentAddEdit, {
|
||||
id: commentPostId.value,
|
||||
open: commentVisible.value,
|
||||
"onUpdate:open": ($event) => commentVisible.value = $event,
|
||||
onAddCommentId: addCommentId,
|
||||
onDeleteCommentId: deleteCommentId
|
||||
}, null, _parent));
|
||||
_push(ssrRenderComponent(_sfc_main$8, {
|
||||
id: optionPostId.value,
|
||||
open: optionVisible.value,
|
||||
"onUpdate:open": ($event) => optionVisible.value = $event
|
||||
}, null, _parent));
|
||||
_push(`<!--]-->`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup$3 = _sfc_main$3.setup;
|
||||
_sfc_main$3.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("views/base/pages/home/components/Posts.vue");
|
||||
return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
|
||||
};
|
||||
const Posts = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-06dbf9e8"]]);
|
||||
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
||||
__name: "CustomStories",
|
||||
__ssrInlineRender: true,
|
||||
async setup(__props) {
|
||||
let __temp, __restore;
|
||||
const selectedStoryId = ref(null);
|
||||
ref(null);
|
||||
ref(false);
|
||||
const mediaStore = useMediaStore();
|
||||
const userStore = useUserStore();
|
||||
const { data } = ([__temp, __restore] = withAsyncContext(() => useAsyncData("story", () => mediaStore.getList())), __temp = await __temp, __restore(), __temp);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "stories-container -ms4" }, _attrs))} data-v-c6b78541><div class="scroll-wrapper ps-4" data-v-c6b78541><!--[-->`);
|
||||
ssrRenderList(unref(mediaStore).users, (user) => {
|
||||
_push(`<div class="story" data-v-c6b78541>`);
|
||||
_push(ssrRenderComponent(UserProfilePic, {
|
||||
src: user.avatar,
|
||||
seenStory: !user?.stories?.length || user.stories.every((item) => item.storyviews.find((_item) => _item.user_id === unref(userStore).user?.id || _item.user_id === "me")),
|
||||
showAdd: user.id === unref(userStore).user?.id
|
||||
}, null, _parent));
|
||||
_push(`<div class="w-full text-center mt1 text-xs truncate" data-v-c6b78541>${ssrInterpolate(user.name)}</div></div>`);
|
||||
});
|
||||
_push(`<!--]--></div>`);
|
||||
if (selectedStoryId.value) {
|
||||
_push(ssrRenderComponent(_sfc_main$6, {
|
||||
id: selectedStoryId.value,
|
||||
"onUpdate:id": ($event) => selectedStoryId.value = $event
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</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("views/base/pages/home/components/CustomStories.vue");
|
||||
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
|
||||
};
|
||||
const CustomStories = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-c6b78541"]]);
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const config = useConfigStore();
|
||||
const percent = useProductStore();
|
||||
useRouter$1();
|
||||
const userStore = useUserStore();
|
||||
useCartStore();
|
||||
const onlinePrices = usePriceStore();
|
||||
const header = config.TEXT_HEADER;
|
||||
const tala18 = computed(() => onlinePrices?.tala18);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_InstallButton = __nuxt_component_0;
|
||||
const _component_ClientOnly = __nuxt_component_0$1;
|
||||
const _component_AProgress = __nuxt_component_2;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({ class: "flex justify-center" }, _attrs))}><div class="w-inherit h-screen overflow-hidden overflow-y-hidden flex flex-col max-w-500px"><div class="flex-col flex overflow-hidden flex-shrink-0"><div class="flex justify-between w-full p-4 sm:hidden">`);
|
||||
_push(ssrRenderComponent(Logo, { class: "h-2rem" }, null, _parent));
|
||||
_push(`<div class="flex items-center gap-3">`);
|
||||
if (unref(config).APP_HAS_GOLD && unref(config).PRICE_HEADER && unref(tala18)) {
|
||||
_push(`<div class="border-1 border-solid p-2px rounded"><div class="font-semibold flex gap-1">${ssrInterpolate(
|
||||
// usePrice((tala18/1000)?? 0,true,'')
|
||||
unref(usePrice)(unref(tala18) / 10, true, "")
|
||||
)} <div class="text-xs text-center w-full">${ssrInterpolate(unref(config).useString("toman"))}</div></div><div class="text-xs text-center">${ssrInterpolate(unref(config).useString("goldGramPrice"))}</div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(ssrRenderComponent(_component_InstallButton, { class: "w-10" }, null, _parent));
|
||||
_push(ssrRenderComponent(_component_ClientOnly, null, {}, _parent));
|
||||
_push(`</div></div><div class="flex justify-between"></div>`);
|
||||
if (unref(header) != "") {
|
||||
_push(`<div class="text-center pb-2 leading-relaxed text-xs">${unref(header) ?? ""}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div><div class="flex-1 overflow-y-auto overflow-x-hidden pb-10vh scrollHome min-h-0 mt2">`);
|
||||
_push(ssrRenderComponent(CustomStories, { class: "" }, null, _parent));
|
||||
if (unref(percent).percentUpload != 100 && unref(percent).loading) {
|
||||
_push(ssrRenderComponent(_component_AProgress, {
|
||||
percent: unref(percent).percentUpload,
|
||||
"show-info": false,
|
||||
status: "active",
|
||||
size: "small"
|
||||
}, null, _parent));
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(ssrRenderComponent(Posts, {
|
||||
"user-post-scroll": "scrollHome",
|
||||
"scroll-save": "scrollPosition"
|
||||
}, null, _parent));
|
||||
_push(`</div></div>`);
|
||||
if (unref(config).APP_HAS_GOLD && unref(config).PRICE_HEADER && unref(tala18)) {
|
||||
_push(`<div class="fixed end-10 top-10 hidden sm:block border-1 border-solid p-2px rounded"><div class="font-semibold flex gap-1">${ssrInterpolate(
|
||||
// usePrice((tala18/1000)?? 0,true,'')
|
||||
unref(usePrice)(unref(tala18) / 10, true, "")
|
||||
)} <div class="text-xs text-center w-full">${ssrInterpolate(unref(config).useString("toman"))}</div></div><div class="text-xs text-center">${ssrInterpolate(unref(config).useString("goldGramPrice"))}</div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<div class="${ssrRenderClass([[{ "shadow-gray-8": unref(config).isNightStore }], "fixed end-10 bottom-10 hidden sm:flex p-2px rounded-full shadow-2xl hover:shadow-xl p-4 items-center gap-2 cursor-pointer"])}"><div class="relative">`);
|
||||
_push(ssrRenderComponent(_sfc_main$5, null, null, _parent));
|
||||
if (unref(userStore).unReadMessage?.length) {
|
||||
_push(`<div class="absolute bg-red-6 -top-2 -right-2 text-xs min-w-4 p-1 h-4 flex flex-col justify-center items-center text-white rounded-full">${ssrInterpolate(unref(userStore).unReadMessage?.length)}</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div><span>${ssrInterpolate(unref(config).useString("messages"))}</span></div></div>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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("views/base/pages/home/index.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/home/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,213 @@
|
||||
import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import _extends from '@babel/runtime/helpers/esm/extends';
|
||||
import { defineComponent, computed, createVNode } from 'vue';
|
||||
import { V as withInstall, z as useConfigInject, ab as flattenChildren, B as genComponentStyleHook, C as merge, J as resetComponent } from './server.mjs';
|
||||
|
||||
const genSharedDividerStyle = (token) => {
|
||||
const {
|
||||
componentCls,
|
||||
sizePaddingEdgeHorizontal,
|
||||
colorSplit,
|
||||
lineWidth
|
||||
} = token;
|
||||
return {
|
||||
[componentCls]: _extends(_extends({}, resetComponent(token)), {
|
||||
borderBlockStart: `${lineWidth}px solid ${colorSplit}`,
|
||||
// vertical
|
||||
"&-vertical": {
|
||||
position: "relative",
|
||||
top: "-0.06em",
|
||||
display: "inline-block",
|
||||
height: "0.9em",
|
||||
margin: `0 ${token.dividerVerticalGutterMargin}px`,
|
||||
verticalAlign: "middle",
|
||||
borderTop: 0,
|
||||
borderInlineStart: `${lineWidth}px solid ${colorSplit}`
|
||||
},
|
||||
"&-horizontal": {
|
||||
display: "flex",
|
||||
clear: "both",
|
||||
width: "100%",
|
||||
minWidth: "100%",
|
||||
margin: `${token.dividerHorizontalGutterMargin}px 0`
|
||||
},
|
||||
[`&-horizontal${componentCls}-with-text`]: {
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
margin: `${token.dividerHorizontalWithTextGutterMargin}px 0`,
|
||||
color: token.colorTextHeading,
|
||||
fontWeight: 500,
|
||||
fontSize: token.fontSizeLG,
|
||||
whiteSpace: "nowrap",
|
||||
textAlign: "center",
|
||||
borderBlockStart: `0 ${colorSplit}`,
|
||||
"&::before, &::after": {
|
||||
position: "relative",
|
||||
width: "50%",
|
||||
borderBlockStart: `${lineWidth}px solid transparent`,
|
||||
// Chrome not accept `inherit` in `border-top`
|
||||
borderBlockStartColor: "inherit",
|
||||
borderBlockEnd: 0,
|
||||
transform: "translateY(50%)",
|
||||
content: "''"
|
||||
}
|
||||
},
|
||||
[`&-horizontal${componentCls}-with-text-left`]: {
|
||||
"&::before": {
|
||||
width: "5%"
|
||||
},
|
||||
"&::after": {
|
||||
width: "95%"
|
||||
}
|
||||
},
|
||||
[`&-horizontal${componentCls}-with-text-right`]: {
|
||||
"&::before": {
|
||||
width: "95%"
|
||||
},
|
||||
"&::after": {
|
||||
width: "5%"
|
||||
}
|
||||
},
|
||||
[`${componentCls}-inner-text`]: {
|
||||
display: "inline-block",
|
||||
padding: "0 1em"
|
||||
},
|
||||
"&-dashed": {
|
||||
background: "none",
|
||||
borderColor: colorSplit,
|
||||
borderStyle: "dashed",
|
||||
borderWidth: `${lineWidth}px 0 0`
|
||||
},
|
||||
[`&-horizontal${componentCls}-with-text${componentCls}-dashed`]: {
|
||||
"&::before, &::after": {
|
||||
borderStyle: "dashed none none"
|
||||
}
|
||||
},
|
||||
[`&-vertical${componentCls}-dashed`]: {
|
||||
borderInlineStartWidth: lineWidth,
|
||||
borderInlineEnd: 0,
|
||||
borderBlockStart: 0,
|
||||
borderBlockEnd: 0
|
||||
},
|
||||
[`&-plain${componentCls}-with-text`]: {
|
||||
color: token.colorText,
|
||||
fontWeight: "normal",
|
||||
fontSize: token.fontSize
|
||||
},
|
||||
[`&-horizontal${componentCls}-with-text-left${componentCls}-no-default-orientation-margin-left`]: {
|
||||
"&::before": {
|
||||
width: 0
|
||||
},
|
||||
"&::after": {
|
||||
width: "100%"
|
||||
},
|
||||
[`${componentCls}-inner-text`]: {
|
||||
paddingInlineStart: sizePaddingEdgeHorizontal
|
||||
}
|
||||
},
|
||||
[`&-horizontal${componentCls}-with-text-right${componentCls}-no-default-orientation-margin-right`]: {
|
||||
"&::before": {
|
||||
width: "100%"
|
||||
},
|
||||
"&::after": {
|
||||
width: 0
|
||||
},
|
||||
[`${componentCls}-inner-text`]: {
|
||||
paddingInlineEnd: sizePaddingEdgeHorizontal
|
||||
}
|
||||
}
|
||||
})
|
||||
};
|
||||
};
|
||||
const useStyle = genComponentStyleHook("Divider", (token) => {
|
||||
const dividerToken = merge(token, {
|
||||
dividerVerticalGutterMargin: token.marginXS,
|
||||
dividerHorizontalWithTextGutterMargin: token.margin,
|
||||
dividerHorizontalGutterMargin: token.marginLG
|
||||
});
|
||||
return [genSharedDividerStyle(dividerToken)];
|
||||
}, {
|
||||
sizePaddingEdgeHorizontal: 0
|
||||
});
|
||||
const dividerProps = () => ({
|
||||
prefixCls: String,
|
||||
type: {
|
||||
type: String,
|
||||
default: "horizontal"
|
||||
},
|
||||
dashed: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
orientation: {
|
||||
type: String,
|
||||
default: "center"
|
||||
},
|
||||
plain: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
orientationMargin: [String, Number]
|
||||
});
|
||||
const Divider = defineComponent({
|
||||
name: "ADivider",
|
||||
inheritAttrs: false,
|
||||
compatConfig: {
|
||||
MODE: 3
|
||||
},
|
||||
props: dividerProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
attrs
|
||||
} = _ref;
|
||||
const {
|
||||
prefixCls: prefixClsRef,
|
||||
direction
|
||||
} = useConfigInject("divider", props);
|
||||
const [wrapSSR, hashId] = useStyle(prefixClsRef);
|
||||
const hasCustomMarginLeft = computed(() => props.orientation === "left" && props.orientationMargin != null);
|
||||
const hasCustomMarginRight = computed(() => props.orientation === "right" && props.orientationMargin != null);
|
||||
const classString = computed(() => {
|
||||
const {
|
||||
type,
|
||||
dashed,
|
||||
plain
|
||||
} = props;
|
||||
const prefixCls = prefixClsRef.value;
|
||||
return {
|
||||
[prefixCls]: true,
|
||||
[hashId.value]: !!hashId.value,
|
||||
[`${prefixCls}-${type}`]: true,
|
||||
[`${prefixCls}-dashed`]: !!dashed,
|
||||
[`${prefixCls}-plain`]: !!plain,
|
||||
[`${prefixCls}-rtl`]: direction.value === "rtl",
|
||||
[`${prefixCls}-no-default-orientation-margin-left`]: hasCustomMarginLeft.value,
|
||||
[`${prefixCls}-no-default-orientation-margin-right`]: hasCustomMarginRight.value
|
||||
};
|
||||
});
|
||||
const innerStyle = computed(() => {
|
||||
const marginValue = typeof props.orientationMargin === "number" ? `${props.orientationMargin}px` : props.orientationMargin;
|
||||
return _extends(_extends({}, hasCustomMarginLeft.value && {
|
||||
marginLeft: marginValue
|
||||
}), hasCustomMarginRight.value && {
|
||||
marginRight: marginValue
|
||||
});
|
||||
});
|
||||
const orientationPrefix = computed(() => props.orientation.length > 0 ? "-" + props.orientation : props.orientation);
|
||||
return () => {
|
||||
var _a;
|
||||
const children = flattenChildren((_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots));
|
||||
return wrapSSR(createVNode("div", _objectSpread(_objectSpread({}, attrs), {}, {
|
||||
"class": [classString.value, children.length ? `${prefixClsRef.value}-with-text ${prefixClsRef.value}-with-text${orientationPrefix.value}` : "", attrs.class],
|
||||
"role": "separator"
|
||||
}), [children.length ? createVNode("span", {
|
||||
"class": `${prefixClsRef.value}-inner-text`,
|
||||
"style": innerStyle.value
|
||||
}, [children]) : null]));
|
||||
};
|
||||
}
|
||||
});
|
||||
const __nuxt_component_1 = withInstall(Divider);
|
||||
|
||||
export { __nuxt_component_1 as _ };
|
||||
@@ -0,0 +1,22 @@
|
||||
import { defineComponent, ref, resolveComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "index",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
ref(false);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_RouterView = resolveComponent("RouterView");
|
||||
_push(ssrRenderComponent(_component_RouterView, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/index.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,47 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-D4jWl3Hy.mjs';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
import './product-DqXo6FRa.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "infProduct",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/add/product/infProduct.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "infProductExcel",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/add/product/excel/infProductExcel.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,70 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-BOjSkKxr.mjs';
|
||||
import 'swiper/vue';
|
||||
import 'swiper/modules';
|
||||
import './product-DqXo6FRa.mjs';
|
||||
import 'pinia';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
import './BasicIconOld-Booq7UXp.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './BaseDatePicker-D3_e-ycp.mjs';
|
||||
import 'moment-jalaali';
|
||||
import 'dayjalali';
|
||||
import './index-CnnQbQCE.mjs';
|
||||
import './index-DN2Eqyc3.mjs';
|
||||
import 'dom-align';
|
||||
import './useMergedState-BZEfJ8Fl.mjs';
|
||||
import './move-DCvQW68K.mjs';
|
||||
import './shallowequal-CJsWvZb3.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './index-BTlbWWOl.mjs';
|
||||
import './media-Cj7oyS0P.mjs';
|
||||
import './media-CiMHc-Ka.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import './FormItem-Uo-Qw9vC.mjs';
|
||||
import 'lodash-es/cloneDeep.js';
|
||||
import 'async-validator';
|
||||
import 'lodash-es/find.js';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "infStory",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/add/story/infStory.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,70 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-BOjSkKxr.mjs';
|
||||
import 'swiper/vue';
|
||||
import 'swiper/modules';
|
||||
import './product-DqXo6FRa.mjs';
|
||||
import 'pinia';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
import './BasicIconOld-Booq7UXp.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './BaseDatePicker-D3_e-ycp.mjs';
|
||||
import 'moment-jalaali';
|
||||
import 'dayjalali';
|
||||
import './index-CnnQbQCE.mjs';
|
||||
import './index-DN2Eqyc3.mjs';
|
||||
import 'dom-align';
|
||||
import './useMergedState-BZEfJ8Fl.mjs';
|
||||
import './move-DCvQW68K.mjs';
|
||||
import './shallowequal-CJsWvZb3.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './index-BTlbWWOl.mjs';
|
||||
import './media-Cj7oyS0P.mjs';
|
||||
import './media-CiMHc-Ka.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import './FormItem-Uo-Qw9vC.mjs';
|
||||
import 'lodash-es/cloneDeep.js';
|
||||
import 'async-validator';
|
||||
import 'lodash-es/find.js';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "infStory",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/edit/story/[id]/infStory.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,61 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-Cqd7hqps.mjs';
|
||||
import './CropperModal-Bf6YuAAD.mjs';
|
||||
import './BasicButton-7YIRCRg8.mjs';
|
||||
import '@ant-design/icons-vue';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import 'unhead/utils';
|
||||
import './BasicIconOld-Booq7UXp.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import 'vue-advanced-cropper';
|
||||
import './close_light-DbrEdRZI.mjs';
|
||||
import '@capacitor/camera';
|
||||
import '@capacitor/core';
|
||||
import './product-DqXo6FRa.mjs';
|
||||
import './post_loading-CMOcYm9B.mjs';
|
||||
import './RadioButton-CE-ccpG2.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './Checkbox-BqbMrYFp.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "inputProduct",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/add/product/inputProduct.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,46 @@
|
||||
import { _ as __nuxt_component_0 } from './server.mjs';
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import '@ant-design/icons-vue';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "inputProductExcel",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_ClientOnly = __nuxt_component_0;
|
||||
_push(ssrRenderComponent(_component_ClientOnly, _attrs, {}, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/add/product/excel/inputProductExcel.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,13 @@
|
||||
import { computed } from 'vue';
|
||||
|
||||
computed(() => {
|
||||
return {
|
||||
pattern: /^[A-Za-z]*$/,
|
||||
message: "فقط حروف انگلیسی مجاز است"
|
||||
};
|
||||
});
|
||||
function inputRulesNoMessage() {
|
||||
return [{ required: true, message: "" }];
|
||||
}
|
||||
|
||||
export { inputRulesNoMessage as i };
|
||||
@@ -0,0 +1,58 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-CyzoVcoD.mjs';
|
||||
import './CropperModal-Bf6YuAAD.mjs';
|
||||
import './BasicButton-7YIRCRg8.mjs';
|
||||
import '@ant-design/icons-vue';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import 'unhead/utils';
|
||||
import './BasicIconOld-Booq7UXp.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import 'vue-advanced-cropper';
|
||||
import './close_light-DbrEdRZI.mjs';
|
||||
import './product-DqXo6FRa.mjs';
|
||||
import './RadioButton-CE-ccpG2.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './Checkbox-BqbMrYFp.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "inputStory",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/edit/story/[id]/inputStory.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,58 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-CyzoVcoD.mjs';
|
||||
import './CropperModal-Bf6YuAAD.mjs';
|
||||
import './BasicButton-7YIRCRg8.mjs';
|
||||
import '@ant-design/icons-vue';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
import 'node:events';
|
||||
import 'node:buffer';
|
||||
import 'node:fs';
|
||||
import 'node:path';
|
||||
import 'node:crypto';
|
||||
import 'node:url';
|
||||
import 'consola';
|
||||
import 'fast-xml-parser';
|
||||
import 'ipx';
|
||||
import 'pinia';
|
||||
import '@supabase/supabase-js';
|
||||
import 'axios';
|
||||
import 'lodash-es';
|
||||
import '@babel/runtime/helpers/esm/extends';
|
||||
import '@babel/runtime/helpers/esm/objectSpread2';
|
||||
import '@ant-design/colors';
|
||||
import '@ctrl/tinycolor';
|
||||
import 'stylis';
|
||||
import 'vue-types';
|
||||
import 'unhead/utils';
|
||||
import './BasicIconOld-Booq7UXp.mjs';
|
||||
import './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import './index-CO_xVqO1.mjs';
|
||||
import 'throttle-debounce';
|
||||
import 'vue-advanced-cropper';
|
||||
import './close_light-DbrEdRZI.mjs';
|
||||
import './product-DqXo6FRa.mjs';
|
||||
import './RadioButton-CE-ccpG2.mjs';
|
||||
import './FormItemContext-DTpHAXaY.mjs';
|
||||
import './Checkbox-BqbMrYFp.mjs';
|
||||
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "inputStory",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(_sfc_main$1, _attrs, null, _parent));
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/add/story/inputStory.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
@@ -0,0 +1,5 @@
|
||||
const isNumeric = (value) => {
|
||||
return !isNaN(parseFloat(value)) && isFinite(value);
|
||||
};
|
||||
|
||||
export { isNumeric as i };
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user