complete
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
import { createVNode } from 'vue';
|
||||
import { b8 as Icon } from '../build/server.mjs';
|
||||
|
||||
// This icon file is generated automatically.
|
||||
var CheckOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z" } }] }, "name": "check", "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 CheckOutlined = function CheckOutlined(props, context) {
|
||||
var p = _objectSpread({}, props, context.attrs);
|
||||
|
||||
return createVNode(Icon, _objectSpread({}, p, {
|
||||
"icon": CheckOutlined$1
|
||||
}), null);
|
||||
};
|
||||
|
||||
CheckOutlined.displayName = 'CheckOutlined';
|
||||
CheckOutlined.inheritAttrs = false;
|
||||
|
||||
export { CheckOutlined as C };
|
||||
@@ -16,3 +16,4 @@ const template = (messages) => {
|
||||
};
|
||||
|
||||
export { template };
|
||||
//# sourceMappingURL=error-500.mjs.map
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"error-500.mjs","sources":["../../../../node_modules/@nuxt/nitro-server/dist/runtime/templates/error-500.mjs"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,150 +0,0 @@
|
||||
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 };
|
||||
@@ -1,91 +0,0 @@
|
||||
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
@@ -1,119 +0,0 @@
|
||||
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 };
|
||||
@@ -1,164 +0,0 @@
|
||||
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 };
|
||||
@@ -1,207 +0,0 @@
|
||||
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 _ };
|
||||
@@ -1,155 +0,0 @@
|
||||
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
@@ -1,82 +0,0 @@
|
||||
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 };
|
||||
@@ -1,370 +0,0 @@
|
||||
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,215 @@
|
||||
import { _ as __nuxt_component_0$1 } from './nuxt-link-DNSfp6ul.mjs';
|
||||
import { defineComponent, ref, watch, mergeProps, withCtx, createTextVNode, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderClass, ssrRenderComponent, ssrRenderStyle, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { _ as _imports_0$1 } from './logo-1-CUpaHlTZ.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
|
||||
const _imports_0 = "" + __buildAssetsURL("logo-1-dark.X7T9FGyu.png");
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "Logo",
|
||||
__ssrInlineRender: true,
|
||||
props: {
|
||||
size: {},
|
||||
isBlue: { type: Boolean }
|
||||
},
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
style: `width: ${__props.size ?? "10rem"}`
|
||||
}, _attrs))}><img${ssrRenderAttr("src", _imports_0$1)} alt="لوگو"></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/Logo.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const Logo = Object.assign(_sfc_main$1, { __name: "Logo" });
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "Header",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const scrollTop = ref(0);
|
||||
const showContactDropdown = ref(false);
|
||||
const animateItems = ref(false);
|
||||
watch(showContactDropdown, (val) => {
|
||||
if (val) {
|
||||
setTimeout(() => {
|
||||
animateItems.value = true;
|
||||
}, 100);
|
||||
} else {
|
||||
animateItems.value = false;
|
||||
}
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_NuxtLink = __nuxt_component_0$1;
|
||||
_push(`<header${ssrRenderAttrs(mergeProps({
|
||||
class: "main-header main-header-one",
|
||||
dir: "rtl"
|
||||
}, _attrs))} data-v-c2b5a393><div id="sticky-header" class="${ssrRenderClass([scrollTop.value > 245 && "sticky-menu", "menu-area"])}" data-v-c2b5a393><div class="container" data-v-c2b5a393><div class="menu-area__inner" data-v-c2b5a393><div class="mobile-nav-toggler" data-v-c2b5a393><i class="fas fa-bars" data-v-c2b5a393></i></div><div class="menu-wrap" data-v-c2b5a393><nav class="menu-nav" data-v-c2b5a393><div class="logo-box-one" data-v-c2b5a393><a href="/" data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(Logo, { size: "10rem" }, null, _parent));
|
||||
_push(`</a></div><div class="navbar-wrap main-menu" data-v-c2b5a393><ul class="navigation" data-v-c2b5a393><li class="active" data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`صفحه نخست`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("صفحه نخست")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/aboutPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`درباره ما`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("درباره ما")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li class="menu-item-has-children" data-v-c2b5a393><a href="#" data-v-c2b5a393>خدمات</a><ul class="sub-menu" data-v-c2b5a393><li data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/pages/DesignWeb" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`خدمات طراحی سایت`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("خدمات طراحی سایت")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/AppDevelopmentPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`خدمات توسعه اپلیکیشن`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("خدمات توسعه اپلیکیشن")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/SeoPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`خدمات سئو و بازاریابی`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("خدمات سئو و بازاریابی")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/graphicDesign" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`خدمات طراحی گرافیک`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("خدمات طراحی گرافیک")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/messagingBotsPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`خدمات رباتهای پیامرسان`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("خدمات رباتهای پیامرسان")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/instagramFarsiPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`اینستاگرام فارسی (منتیفای | montify)`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("اینستاگرام فارسی (منتیفای | montify)")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li></ul></li><li class="" data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/service/servicesPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`نمونه کارها`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("نمونه کارها")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`<ul class="sub-menu" data-v-c2b5a393></ul></li><li data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/blogPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`مقالات`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("مقالات")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-c2b5a393>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/contactPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`ارتباط با ما`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("ارتباط با ما")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li></ul></div><div class="menu-nav__right" data-v-c2b5a393><div class="hamburger-menu" data-v-c2b5a393> ☰ </div>`);
|
||||
if (showContactDropdown.value) {
|
||||
_push(`<div class="contact-dropdown" data-v-c2b5a393><p class="menu-item" style="${ssrRenderStyle({ "--i": "0" })}" data-v-c2b5a393>نیاز به کمک دارید؟</p><a href="tel:+989134469985" class="menu-item" style="${ssrRenderStyle({ "--i": "1", "display": "inline-block", "color": "white" })}" role="button" data-v-c2b5a393> 9134469985 ( 98+ ) </a><a href="tel:+9809373717154" class="menu-item" style="${ssrRenderStyle({ "--i": "2", "display": "inline-block", "color": "white" })}" role="button" data-v-c2b5a393> 9373717154 ( 98+ ) </a><div class="social-icons flex justify-center" data-v-c2b5a393><a href="https://instagram.com/appco.app" target="_blank" rel="noopener" aria-label="Instagram" class="menu-item" style="${ssrRenderStyle({ "--i": "3" })}" data-v-c2b5a393><i class="fab fa-instagram ml-2" data-v-c2b5a393></i></a><a href="https://t.me/989373717154" target="_blank" rel="noopener" aria-label="Telegram" class="menu-item" style="${ssrRenderStyle({ "--i": "4" })}" data-v-c2b5a393><i class="fab fa-telegram ml-2" data-v-c2b5a393></i></a><a href="https://wa.me/989373717154" target="_blank" rel="noopener" aria-label="WhatsApp" class="menu-item" style="${ssrRenderStyle({ "--i": "5" })}" data-v-c2b5a393><i class="fab fa-whatsapp ml-2" data-v-c2b5a393></i></a></div></div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></nav></div></div><div class="mobile-menu" data-v-c2b5a393><nav class="menu-box" data-v-c2b5a393><div class="close-btn" data-v-c2b5a393><i class="fas fa-times" data-v-c2b5a393></i></div><div class="nav-logo" data-v-c2b5a393><a href="index-2.html" data-v-c2b5a393><img${ssrRenderAttr("src", _imports_0)} size="10" isBlue data-v-c2b5a393></a></div><div class="menu-outer" data-v-c2b5a393></div><div class="contact-info" data-v-c2b5a393><div class="icon-box" data-v-c2b5a393><span class="icon-call" data-v-c2b5a393></span></div><p data-v-c2b5a393><a href="tel:+989134469985" dir="ltr" data-v-c2b5a393>(+98) 9134469985</a></p></div><div class="social-links" data-v-c2b5a393><ul class="clearfix list-wrap" data-v-c2b5a393><li data-v-c2b5a393><a href="https://instagram.com/appco.app" target="_blank" rel="noopener" data-v-c2b5a393><i class="fab fa-instagram" data-v-c2b5a393></i></a></li><li data-v-c2b5a393><a href="https://t.me/989373717154" target="_blank" rel="noopener" data-v-c2b5a393><i class="fab fa-telegram" data-v-c2b5a393></i></a></li><li data-v-c2b5a393><a href="https://wa.me/989373717154" target="_blank" rel="noopener" data-v-c2b5a393><i class="fab fa-whatsapp" data-v-c2b5a393></i></a></li></ul></div></nav></div><div class="menu-backdrop" data-v-c2b5a393></div></div></div></header>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
const _sfc_setup = _sfc_main.setup;
|
||||
_sfc_main.setup = (props, ctx) => {
|
||||
const ssrContext = useSSRContext();
|
||||
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Header.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_0 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main, [["__scopeId", "data-v-c2b5a393"]]), { __name: "Header" });
|
||||
|
||||
export { Logo as L, __nuxt_component_0 as _ };
|
||||
//# sourceMappingURL=Header-JmiC84XK.mjs.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"Header-JmiC84XK.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/Header-JmiC84XK.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -1,70 +0,0 @@
|
||||
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_2 } from './FormItem-Dqb4rG_N.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_2;
|
||||
_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 };
|
||||
@@ -1,46 +0,0 @@
|
||||
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 };
|
||||
@@ -1,38 +0,0 @@
|
||||
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 _ };
|
||||
@@ -1,233 +0,0 @@
|
||||
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 _ };
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"Part9-T4V0rIkb.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/Part9-T4V0rIkb.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -1,309 +0,0 @@
|
||||
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
@@ -1,719 +0,0 @@
|
||||
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 };
|
||||
@@ -1,111 +0,0 @@
|
||||
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 _ };
|
||||
@@ -1,24 +0,0 @@
|
||||
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 };
|
||||
@@ -1,92 +0,0 @@
|
||||
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
@@ -1,46 +0,0 @@
|
||||
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
@@ -1,46 +0,0 @@
|
||||
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
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"_id_-Db-V9Tg8.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_id_-Db-V9Tg8.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -1,87 +0,0 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-73jOE-zu.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-9PHHD2E-.mjs';
|
||||
import './close_light-DbrEdRZI.mjs';
|
||||
import './FormItem-Dqb4rG_N.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-CPpat_WT.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 };
|
||||
@@ -7,3 +7,4 @@ const _export_sfc = (sfc, props) => {
|
||||
};
|
||||
|
||||
export { _export_sfc as _ };
|
||||
//# sourceMappingURL=_plugin-vue_export-helper-1tPrXgE0.mjs.map
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"_plugin-vue_export-helper-1tPrXgE0.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_plugin-vue_export-helper-1tPrXgE0.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -0,0 +1,90 @@
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrRenderAttr, ssrRenderStyle } from 'vue/server-renderer';
|
||||
import { defineComponent, mergeProps, useSSRContext } from 'vue';
|
||||
import { _ as _imports_0 } from './logo-1-CUpaHlTZ.mjs';
|
||||
import { P as Part4, c as Part9, a as Part5, b as Part7 } from './Part9-T4V0rIkb.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { u as useSeoMeta } from './composables-Coz3KJnj.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 'pinia';
|
||||
import 'vue-router';
|
||||
import 'dayjs';
|
||||
import 'dayjs/plugin/updateLocale.js';
|
||||
import 'dayjs/plugin/relativeTime.js';
|
||||
import 'dayjs/plugin/utc.js';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _imports_1 = "" + __buildAssetsURL("subscribe-v1-shape1.HN9ec7Xe.webp");
|
||||
const _imports_2 = "" + __buildAssetsURL("about-two__img1.BQh9MTDQ.webp");
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "AboutPage",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const backgroundStyle = {
|
||||
background: `
|
||||
radial-gradient(circle at 20% 30%, rgba(35, 63, 146, 0.4) 0%, transparent 50%),
|
||||
radial-gradient(circle at 80% 70%, rgba(100, 116, 162, 0.3) 0%, transparent 50%),
|
||||
linear-gradient(135deg, #0d1530 0%, #1a1f3a 25%, #233f92 50%, #1a1a1c 75%, #0a0a0c 100%)
|
||||
`
|
||||
};
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: "fix body-dark-bg",
|
||||
dir: "rtl"
|
||||
}, _attrs))} data-v-1c7481d5><div class="xs-sidebar-group info-group info-sidebar" data-v-1c7481d5><div class="xs-overlay xs-bg-black" data-v-1c7481d5></div><div class="xs-sidebar-widget" data-v-1c7481d5><div class="sidebar-widget-container" data-v-1c7481d5><div class="widget-heading" data-v-1c7481d5><a href="#" class="close-side-widget" data-v-1c7481d5>X</a></div><div class="sidebar-textwidget" data-v-1c7481d5><div class="sidebar-info-contents" data-v-1c7481d5><div class="content-inner" data-v-1c7481d5><div class="logo" data-v-1c7481d5><a href="index-2.html" data-v-1c7481d5><img${ssrRenderAttr("src", _imports_0)} alt="لوگو" data-v-1c7481d5></a></div><div class="content-box" data-v-1c7481d5><h4 data-v-1c7481d5>درباره ما</h4><div class="inner-text" data-v-1c7481d5><p data-v-1c7481d5> سایت فناوری ای تی و تکنولوژی منبعی جامع برای جدیدترین اخبار و تحلیلهای دنیای فناوری است. این سایت به ارائه مقالات آموزشی، بررسیهای محصولات و راهنماییهای فنی میپردازد </p></div></div><div class="form-inner" data-v-1c7481d5><h4 data-v-1c7481d5>دریافت پیشنهاد رایگان</h4><form action="https://figtheme.com/html/techlab/index.html" method="post" data-v-1c7481d5><div class="form-group" data-v-1c7481d5><input type="text" name="name" placeholder="نام" data-v-1c7481d5></div><div class="form-group" data-v-1c7481d5><input type="email" name="email" placeholder="ایمیل" data-v-1c7481d5></div><div class="form-group" data-v-1c7481d5><textarea name="message" placeholder="پیام..." data-v-1c7481d5></textarea></div><div class="form-group message-btn" data-v-1c7481d5><button class="button-style-1" type="submit" data-loading-text="لطفا صبر کنید..." data-v-1c7481d5> ارسال </button></div></form></div><div class="sidebar-contact-info" data-v-1c7481d5><h4 data-v-1c7481d5>اطلاعات تماس</h4><ul data-v-1c7481d5><li data-v-1c7481d5><span class="icon-pin" data-v-1c7481d5></span> خیابان ولیعصر ، خیابان هاشمی فر </li><li data-v-1c7481d5><span class="icon-call" data-v-1c7481d5></span><a href="tel:123456789" data-v-1c7481d5>+1 555-9990-153</a></li><li data-v-1c7481d5><span class="fa fa-envelope" data-v-1c7481d5></span><a href="mailto:info@example.com" data-v-1c7481d5>info@example.com</a></li></ul></div><div class="thm-social-link1" data-v-1c7481d5><ul class="social-box" data-v-1c7481d5><li class="instagram" data-v-1c7481d5><a href="https://instagram.com/appco.app" target="_blank" rel="noopener" data-v-1c7481d5><i class="icon-instagram" aria-hidden="true" data-v-1c7481d5></i></a></li><li class="telegram" data-v-1c7481d5><a href="https://t.me/989373717154" target="_blank" rel="noopener" data-v-1c7481d5><i class="fab fa-telegram" aria-hidden="true" data-v-1c7481d5></i></a></li></ul></div></div></div></div></div></div></div><section class="page-header" data-v-1c7481d5><div class="page-header__bg" style="${ssrRenderStyle(backgroundStyle)}" data-v-1c7481d5></div><div class="container" data-v-1c7481d5><div class="page-header__inner" data-v-1c7481d5><h2 data-v-1c7481d5>درباره ما</h2><ul class="thm-breadcrumb" data-v-1c7481d5><li data-v-1c7481d5><a href="index-2.html" data-v-1c7481d5>صفحه اصلی</a></li><li data-v-1c7481d5><span data-v-1c7481d5>/</span></li><li data-v-1c7481d5>درباره ما</li></ul></div></div></section>`);
|
||||
_push(ssrRenderComponent(Part4, null, null, _parent));
|
||||
_push(`<section class="subscribe-one" data-v-1c7481d5><div class="container" data-v-1c7481d5><div class="subscribe-one__inner" data-v-1c7481d5><div class="shape1 float-bob-x" data-v-1c7481d5><img${ssrRenderAttr("src", _imports_1)} data-v-1c7481d5></div><div class="title-box text-center tg-heading-subheading opacity-0" data-animation="bounceInRight" data-v-1c7481d5><h2 class="tg-element-title" data-v-1c7481d5> درخواست پروژه دارید؟ <br data-v-1c7481d5> اسم و مشخصات خود را ثبت کنید تا کارشناسان با شما تماس بگیرند </h2></div><form class="subscribe-one__form" action="#" data-v-1c7481d5><input type="email" name="email" placeholder="ایمیل خود را وارد کنید" data-v-1c7481d5><button type="submit" class="button-style-1 secondary-white" data-v-1c7481d5><span class="txt" data-v-1c7481d5>اشتراک</span></button></form></div></div></section>`);
|
||||
_push(ssrRenderComponent(Part9, null, null, _parent));
|
||||
_push(ssrRenderComponent(Part5, null, null, _parent));
|
||||
_push(`<section class="about-two" data-v-1c7481d5><div class="container" data-v-1c7481d5><div class="row" data-v-1c7481d5><div class="col-xl-6" data-v-1c7481d5><div class="about-two__content" data-v-1c7481d5><div class="section-title tg-heading-subheading" data-animation="bounceInRight" data-v-1c7481d5><h5 class="tg-element-title" data-v-1c7481d5>درباره ما</h5><h2 class="tg-element-title" data-v-1c7481d5> خلق چشماندازهای <br data-v-1c7481d5> دیجیتال </h2></div><div class="text" data-v-1c7481d5><p data-v-1c7481d5> هیچوقت بهاین شکل نبوده که زندگی خالی از چالش باشد. اکنون باید نگاهی بیاندازیم به دلایل مهمی که باعث موفقیت کسبوکارهای نوپا شدهاند. از گذشته درس بگیریم و از اشتباهات دیگران برای بهبود خودمان استفاده کنیم. </p></div><div class="about-two__content-list-box" data-v-1c7481d5><div class="row" data-v-1c7481d5><div class="col-xl-6 col-lg-6 col-md-6" data-v-1c7481d5><div class="about-two__content-list-box-single" data-v-1c7481d5><ul data-v-1c7481d5><li data-v-1c7481d5><div class="icon-box" data-v-1c7481d5><span class="icon-checklist-2" data-v-1c7481d5></span></div><p data-v-1c7481d5>اشتباهاتی که باید از آنها اجتناب کرد</p></li><li data-v-1c7481d5><div class="icon-box" data-v-1c7481d5><span class="icon-checklist-2" data-v-1c7481d5></span></div><p data-v-1c7481d5>کسبوکار نوپای شما</p></li><li data-v-1c7481d5><div class="icon-box" data-v-1c7481d5><span class="icon-checklist-2" data-v-1c7481d5></span></div><p data-v-1c7481d5>دانش درباره فونتها</p></li></ul></div></div><div class="col-xl-6 col-lg-6 col-md-6" data-v-1c7481d5><div class="about-two__content-list-box-single" data-v-1c7481d5><ul data-v-1c7481d5><li data-v-1c7481d5><div class="icon-box" data-v-1c7481d5><span class="icon-checklist-2" data-v-1c7481d5></span></div><p data-v-1c7481d5>اشتباهاتی که باید از آنها اجتناب کرد</p></li><li data-v-1c7481d5><div class="icon-box" data-v-1c7481d5><span class="icon-checklist-2" data-v-1c7481d5></span></div><p data-v-1c7481d5>کسبوکار نوپای شما</p></li><li data-v-1c7481d5><div class="icon-box" data-v-1c7481d5><span class="icon-checklist-2" data-v-1c7481d5></span></div><p data-v-1c7481d5>دانش درباره فونتها</p></li></ul></div></div></div></div></div></div><div class="col-xl-6 wow fadeInRight" data-wow-delay=".3s" data-v-1c7481d5><div class="about-two__img" data-v-1c7481d5><div class="inner" data-v-1c7481d5><img${ssrRenderAttr("src", _imports_2)} alt="appco" data-v-1c7481d5><div class="about-two__video" data-v-1c7481d5><a href="https://www.youtube.com/watch?v=6mkoGSqTqFI" class="about-two__video-btn popup-video" data-v-1c7481d5><span class="icon-play-button-arrowhead" data-v-1c7481d5></span></a></div></div></div></div></div></div></section>`);
|
||||
_push(ssrRenderComponent(Part7, null, null, _parent));
|
||||
_push(`<section class="working-process-one" data-v-1c7481d5><div class="container" data-v-1c7481d5><div class="swiper-container testimonial-carousel-two" data-v-1c7481d5><div class="swiper-wrapper" data-v-1c7481d5><div class="swiper-slide" data-v-1c7481d5><div class="working-process-one__single" data-v-1c7481d5><div class="working-process-one__title" data-v-1c7481d5><div class="circle" data-v-1c7481d5></div><h3 data-v-1c7481d5>طراحی تجربه کاربری</h3><div class="icon" data-v-1c7481d5><i class="fas fa-laptop-code" data-v-1c7481d5></i></div></div><p class="working-process-one__text" data-v-1c7481d5> با طراحی UI/UX حرفهای، کاربران تجربهای روان و دلنشین از محصولات دیجیتال شما خواهند داشت. </p><a class="working-process-one__btn" href="#" data-v-1c7481d5>مطالعه بیشتر <i class="fa fa-arrow-left" data-v-1c7481d5></i></a><span class="working-process-one__big-text" data-v-1c7481d5>01</span></div></div><div class="swiper-slide" data-v-1c7481d5><div class="working-process-one__single" data-v-1c7481d5><div class="working-process-one__title" data-v-1c7481d5><div class="circle" data-v-1c7481d5></div><h3 data-v-1c7481d5>توسعه وب و اپلیکیشن</h3><div class="icon" data-v-1c7481d5><span class="icon-data-guard-sentinel-2" data-v-1c7481d5></span></div></div><p class="working-process-one__text" data-v-1c7481d5> طراحی و پیادهسازی انواع وبسایتهای اختصاصی، وردپرس و اپلیکیشنهای موبایل با جدیدترین تکنولوژیها و استانداردها. </p><a class="working-process-one__btn" href="#" data-v-1c7481d5>مطالعه بیشتر <i class="fa fa-arrow-left" data-v-1c7481d5></i></a><span class="working-process-one__big-text" data-v-1c7481d5>02</span></div></div><div class="swiper-slide" data-v-1c7481d5><div class="working-process-one__single" data-v-1c7481d5><div class="working-process-one__title" data-v-1c7481d5><div class="circle" data-v-1c7481d5></div><h3 data-v-1c7481d5>سئو و بهینهسازی</h3><div class="icon" data-v-1c7481d5><span class="icon-allow22" data-v-1c7481d5></span></div></div><p class="working-process-one__text" data-v-1c7481d5> افزایش رتبه وبسایت در موتورهای جستجو با تحلیل رقبا، تولید محتوا و تکنیکهای سئو داخلی و خارجی. </p><a class="working-process-one__btn" href="#" data-v-1c7481d5>مطالعه بیشتر <i class="fa fa-arrow-left" data-v-1c7481d5></i></a><span class="working-process-one__big-text" data-v-1c7481d5>03</span></div></div><div class="swiper-slide" data-v-1c7481d5><div class="working-process-one__single" data-v-1c7481d5><div class="working-process-one__title" data-v-1c7481d5><div class="circle" data-v-1c7481d5></div><h3 data-v-1c7481d5>هویت بصری برند</h3><div class="icon" data-v-1c7481d5><span class="icon-data-guard-sentinel" data-v-1c7481d5></span></div></div><p class="working-process-one__text" data-v-1c7481d5> طراحی لوگو، بنر، کارت ویزیت، رنگ سازمانی و سایر المانهای گرافیکی برای ساخت تصویری یکپارچه و ماندگار از برند شما. </p><a class="working-process-one__btn" href="#" data-v-1c7481d5>مطالعه بیشتر <i class="fa fa-arrow-left" data-v-1c7481d5></i></a><span class="working-process-one__big-text" data-v-1c7481d5>04</span></div></div><div class="swiper-slide" data-v-1c7481d5><div class="working-process-one__single" data-v-1c7481d5><div class="working-process-one__title" data-v-1c7481d5><div class="circle" data-v-1c7481d5></div><h3 data-v-1c7481d5>توسعه رباتهای پیامرسان</h3><div class="icon" data-v-1c7481d5><span class="icon-chat" data-v-1c7481d5></span></div></div><p class="working-process-one__text" data-v-1c7481d5> طراحی و پیادهسازی رباتهای هوشمند در پیامرسانهایی مانند تلگرام و بله برای بهینهسازی فرآیندهای کسبوکار، افزایش بهرهوری و ارتقاء تعامل با کاربران به صورت کاملاً سفارشی و متناسب با نیازهای شما. </p><a class="working-process-one__btn" href="#" data-v-1c7481d5>مطالعه بیشتر <i class="fa fa-arrow-left" data-v-1c7481d5></i></a><span class="working-process-one__big-text" data-v-1c7481d5>05</span></div></div></div></div></div></section></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("main/mainPage/components/AboutPage.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const AboutPage = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-1c7481d5"]]);
|
||||
const _sfc_main = {
|
||||
__name: "aboutPage",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useSeoMeta({
|
||||
title: "درباره اپ کو (Appco) | درباره ما",
|
||||
description: "در دنیای امروز، وبسایت شما ویترین دیجیتالی برندتان است؛ جایی که اولین برخورد مشتری با کسبوکار شما شکل میگیرد. طراحی اختصاصی سایت به شما این امکان را میدهد که دقیقاً آنچه برای موفقیت نیاز دارید، با هویتی متناسب با برندتان پیادهسازی کنید. ما در اپ کو (Appco) با ترکیب تجربه، تخصص و خلاقیت، وبسایتی طراحی میکنیم که نهتنها زیبا و کارآمد است، بلکه متناسب با نیاز واقعی شما و مخاطبانتان توسعه مییابد. هدف ما خلق بستری دیجیتالی است که به رشد و تمایز برند شما کمک کند.",
|
||||
ogTitle: "درباره اپ کو (Appco) | درباره ما",
|
||||
ogDescription: "در دنیای امروز، وبسایت شما ویترین دیجیتالی برندتان است؛ جایی که اولین برخورد مشتری با کسبوکار شما شکل میگیرد. طراحی اختصاصی سایت به شما این امکان را میدهد که دقیقاً آنچه برای موفقیت نیاز دارید، با هویتی متناسب با برندتان پیادهسازی کنید. ما در اپ کو (Appco) با ترکیب تجربه، تخصص و خلاقیت، وبسایتی طراحی میکنیم که نهتنها زیبا و کارآمد است، بلکه متناسب با نیاز واقعی شما و مخاطبانتان توسعه مییابد. هدف ما خلق بستری دیجیتالی است که به رشد و تمایز برند شما کمک کند.",
|
||||
ogImage: "/favicon.ico"
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(AboutPage, _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/aboutPage.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=aboutPage-4hZRHk3Z.mjs.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"aboutPage-4hZRHk3Z.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/aboutPage-4hZRHk3Z.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -1,46 +0,0 @@
|
||||
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 };
|
||||
@@ -1,46 +0,0 @@
|
||||
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 };
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"appDevelopmentPage-DWFJn6O7.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appDevelopmentPage-DWFJn6O7.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -1,287 +0,0 @@
|
||||
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 };
|
||||
@@ -1,46 +0,0 @@
|
||||
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 };
|
||||
@@ -1,21 +0,0 @@
|
||||
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,4 @@
|
||||
const _imports_3 = "" + __buildAssetsURL("blog-page-img1.D014P7Yl.webp");
|
||||
|
||||
export { _imports_3 as _ };
|
||||
//# sourceMappingURL=blog-page-img1-CJsIqvGs.mjs.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"blog-page-img1-CJsIqvGs.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/blog-page-img1-CJsIqvGs.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -0,0 +1,263 @@
|
||||
import { defineComponent, ref, computed, watch, withCtx, createTextVNode, createVNode, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderStyle, ssrRenderAttr, ssrIncludeBooleanAttr, ssrInterpolate, ssrRenderList, ssrRenderClass } from 'vue/server-renderer';
|
||||
import { _ as __nuxt_component_0 } from './nuxt-link-DNSfp6ul.mjs';
|
||||
import { _ as _imports_0 } from './logo-1-CUpaHlTZ.mjs';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { u as useSeoMeta } from './composables-Coz3KJnj.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 './server.mjs';
|
||||
import 'pinia';
|
||||
import 'dayjs';
|
||||
import 'dayjs/plugin/updateLocale.js';
|
||||
import 'dayjs/plugin/relativeTime.js';
|
||||
import 'dayjs/plugin/utc.js';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
|
||||
const itemsPerPage = 4;
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "BlogPage",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const route = useRoute();
|
||||
const backgroundStyle = {
|
||||
background: `
|
||||
radial-gradient(circle at 20% 30%, rgba(35, 63, 146, 0.4) 0%, transparent 50%),
|
||||
radial-gradient(circle at 80% 70%, rgba(100, 116, 162, 0.3) 0%, transparent 50%),
|
||||
linear-gradient(135deg, #0d1530 0%, #1a1f3a 25%, #233f92 50%, #1a1a1c 75%, #0a0a0c 100%)
|
||||
`
|
||||
};
|
||||
const currentPage = ref(1);
|
||||
const activeCategory = ref("");
|
||||
const searchTerm = ref("");
|
||||
const allArticles = [
|
||||
{
|
||||
id: 1,
|
||||
title: "هزینه طراحی سایت در ۱۴۰۵ — راهنمای کامل قیمتگذاری",
|
||||
category: "طراحی سایت",
|
||||
categoryId: "web-design",
|
||||
image: "/assets/img/weblog/cost-to-build-a-wordpress-website.webp",
|
||||
link: "/blog/hazine-tarahi-site-1405",
|
||||
excerpt: "راهنمای کامل هزینه و قیمت طراحی سایت در سال ۱۴۰۵. عوامل مؤثر بر قیمت، محدوده هزینه سایت با قالب آماده، شرکتی، فروشگاهی و پرتال. هزینه نگهداری و نحوه دریافت پیشفاکتور دقیق از اپ کو."
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: "چطور برندینگ تخصصی میتواند کسبوکار شما را از رقبا متمایز کند؟",
|
||||
category: "طراحی سایت",
|
||||
categoryId: "web-design",
|
||||
image: "/assets/img/weblog/Brand-Strategy-1.webp",
|
||||
link: "/blog/chetor-branding-takhasosi-mitavanad-kasbokar-ra-motamayez-konad",
|
||||
excerpt: "برندینگ تخصصی یکی از مهمترین عوامل موفقیت در دنیای کسبوکار امروز است. در این مقاله به بررسی راهکارهای برندینگ تخصصی میپردازیم و نشان میدهیم که چگونه یک برند قوی میتواند کسبوکار شما را از رقبا متمایز کند و در ذهن مشتریان ماندگار شود."
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
title: "مزایای طراحی سایت اختصاصی",
|
||||
category: "طراحی سایت",
|
||||
categoryId: "web-design",
|
||||
image: "/assets/img/weblog/Exclusive website design.webp",
|
||||
link: "/blog/mazaye-tarahi-site-ekhtesasi",
|
||||
excerpt: "طراحی سایت اختصاصی یکی از مهمترین تصمیمهای کسبوکارها در دنیای دیجیتال است. در این مقاله به بررسی مزایای طراحی سایت اختصاصی میپردازیم و تفاوت آن با سایتهای آماده را بررسی میکنیم. یک سایت اختصاصی میتواند به رشد کسبوکار شما کمک کند و تجربه کاربری بهتری ارائه دهد."
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
title: "وردپرس یا طراحی اختصاصی؟ راهنمای انتخاب برای استارتاپها",
|
||||
category: "طراحی سایت",
|
||||
categoryId: "web-design",
|
||||
image: "/assets/img/weblog/coding&wordpress.webp",
|
||||
link: "/blog/wordpress-ya-tarahi-ekhtesasi-estartap",
|
||||
excerpt: "مقایسه وردپرس و طراحی سایت اختصاصی برای استارتاپها. هزینه، زمان، انعطاف و امنیت. چه زمانی وردپرس و چه زمانی سایت اختصاصی انتخاب کنیم؟ راهنمای عملی انتخاب."
|
||||
}
|
||||
];
|
||||
const categories = [
|
||||
{ id: "", label: "همه مقالات" },
|
||||
{ id: "web-design", label: "طراحی سایت" },
|
||||
{ id: "app-development", label: "توسعه اپلیکیشن" },
|
||||
{ id: "seo", label: "سئو و بازاریابی" },
|
||||
{ id: "graphic-design", label: "طراحی گرافیک" },
|
||||
{ id: "messaging-bots", label: "ربات پیامرسان و اینستاگرام" }
|
||||
];
|
||||
const filteredArticles = computed(() => {
|
||||
let filtered = allArticles;
|
||||
if (activeCategory.value) {
|
||||
filtered = filtered.filter((a) => a.categoryId === activeCategory.value);
|
||||
}
|
||||
if (searchTerm.value.trim()) {
|
||||
const term = searchTerm.value.trim().toLowerCase();
|
||||
filtered = filtered.filter((a) => {
|
||||
return a.title.toLowerCase().includes(term) || a.excerpt.toLowerCase().includes(term) || a.category.toLowerCase().includes(term);
|
||||
});
|
||||
}
|
||||
return filtered;
|
||||
});
|
||||
const totalPages = computed(() => Math.ceil(filteredArticles.value.length / itemsPerPage));
|
||||
const currentPageArticles = computed(() => {
|
||||
const start = (currentPage.value - 1) * itemsPerPage;
|
||||
const end = start + itemsPerPage;
|
||||
return filteredArticles.value.slice(start, end);
|
||||
});
|
||||
const validCategoryIds = ["web-design", "app-development", "seo", "graphic-design", "messaging-bots"];
|
||||
function applyCategoryFromRoute() {
|
||||
const q = route.query?.category;
|
||||
const cat = typeof q === "string" && validCategoryIds.includes(q) ? q : "";
|
||||
activeCategory.value = cat;
|
||||
currentPage.value = 1;
|
||||
}
|
||||
watch(() => route.query?.category, applyCategoryFromRoute);
|
||||
const pageNumbers = computed(() => {
|
||||
const pages = [];
|
||||
for (let i = 1; i <= totalPages.value; i++) {
|
||||
pages.push(i);
|
||||
}
|
||||
return pages;
|
||||
});
|
||||
const highlightText = (text, searchTerm2) => {
|
||||
if (!searchTerm2.trim()) return text;
|
||||
const term = searchTerm2.trim();
|
||||
const regex = new RegExp(`(${term.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")})`, "gi");
|
||||
return text.replace(regex, '<mark class="search-highlight">$1</mark>');
|
||||
};
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_NuxtLink = __nuxt_component_0;
|
||||
_push(`<!--[--><div class="fix body-dark-bg" style="${ssrRenderStyle({ "direction": "rtl" })}" data-v-06bedca9><div class="xs-sidebar-group info-group info-sidebar" data-v-06bedca9><div class="xs-overlay xs-bg-black" data-v-06bedca9></div><div class="xs-sidebar-widget" data-v-06bedca9><div class="sidebar-widget-container" data-v-06bedca9><div class="widget-heading" data-v-06bedca9><a href="#" class="close-side-widget" data-v-06bedca9>X</a></div><div class="sidebar-textwidget" data-v-06bedca9><div class="sidebar-info-contents" data-v-06bedca9><div class="content-inner" data-v-06bedca9><div class="logo" data-v-06bedca9><a href="index-2.html" data-v-06bedca9><img${ssrRenderAttr("src", _imports_0)} alt="appco" data-v-06bedca9></a></div><div class="content-box" data-v-06bedca9><h4 data-v-06bedca9>درباره ما</h4><div class="inner-text" data-v-06bedca9><p data-v-06bedca9> سایت فناوری ای تی و تکنولوژی منبعی جامع برای جدیدترین اخبار و تحلیلهای دنیای فناوری است. این سایت به ارائه مقالات آموزشی، بررسیهای محصولات و راهنماییهای فنی میپردازد </p></div></div><div class="form-inner" data-v-06bedca9><h4 data-v-06bedca9>دریافت پیشنهاد رایگان</h4><form action="https://figtheme.com/html/techlab/index.html" method="post" data-v-06bedca9><div class="form-group" data-v-06bedca9><input type="text" name="name" placeholder="نام"${ssrIncludeBooleanAttr(true) ? " required" : ""} data-v-06bedca9></div><div class="form-group" data-v-06bedca9><input type="email" name="email" placeholder="ایمیل"${ssrIncludeBooleanAttr(true) ? " required" : ""} data-v-06bedca9></div><div class="form-group" data-v-06bedca9><textarea name="message" placeholder="پیام..." data-v-06bedca9></textarea></div><div class="form-group message-btn" data-v-06bedca9><button class="button-style-1" type="submit" data-loading-text="لطفا صبر کنید..." data-v-06bedca9> ارسال </button></div></form></div><div class="sidebar-contact-info" data-v-06bedca9><h4 data-v-06bedca9>اطلاعات تماس</h4><ul data-v-06bedca9><li data-v-06bedca9><span class="icon-pin" data-v-06bedca9></span> خیابان ولیعصر ، خیابان هاشمی فر </li><li data-v-06bedca9><span class="icon-call" data-v-06bedca9></span><a href="tel:123456789" data-v-06bedca9>+1 555-9990-153</a></li><li data-v-06bedca9><span class="fa fa-envelope" data-v-06bedca9></span><a href="mailto:info@example.com" data-v-06bedca9>info@example.com</a></li></ul></div><div class="thm-social-link1" data-v-06bedca9><ul class="social-box" data-v-06bedca9><li class="instagram" data-v-06bedca9><a href="https://instagram.com/appco.app" target="_blank" rel="noopener" data-v-06bedca9><i class="icon-instagram" aria-hidden="true" data-v-06bedca9></i></a></li><li class="telegram" data-v-06bedca9><a href="https://t.me/989373717154" target="_blank" rel="noopener" data-v-06bedca9><i class="fab fa-telegram" aria-hidden="true" data-v-06bedca9></i></a></li></ul></div></div></div></div></div></div></div><section class="page-header" data-v-06bedca9><div class="page-header__bg" style="${ssrRenderStyle(backgroundStyle)}" data-v-06bedca9></div><div class="container" data-v-06bedca9><div class="page-header__inner" data-v-06bedca9><h2 data-v-06bedca9>دانستنی ها و مقالات</h2><ul class="thm-breadcrumb" data-v-06bedca9><li data-v-06bedca9>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`صفحه اصلی`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("صفحه اصلی")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-06bedca9><span data-v-06bedca9>/</span></li><li data-v-06bedca9>دانستنی ها و مقالات</li></ul></div></div></section><section class="blog-page" data-v-06bedca9><div class="container" data-v-06bedca9><div class="row" data-v-06bedca9><div class="col-xl-8 col-lg-7" data-v-06bedca9><div class="blog-page__content" data-v-06bedca9>`);
|
||||
if (currentPageArticles.value.length === 0) {
|
||||
_push(`<div class="blog-page__empty" data-v-06bedca9>`);
|
||||
if (searchTerm.value.trim()) {
|
||||
_push(`<p data-v-06bedca9> هیچ مقالهای با عبارت "${ssrInterpolate(searchTerm.value)}" یافت نشد. </p>`);
|
||||
} else {
|
||||
_push(`<p data-v-06bedca9> در این دستهبندی هنوز مقالهای منتشر نشده است. </p>`);
|
||||
}
|
||||
_push(`</div>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<!--[-->`);
|
||||
ssrRenderList(currentPageArticles.value, (article) => {
|
||||
_push(`<div class="blog-page__single" data-v-06bedca9><div class="blog-page__single-img" data-v-06bedca9>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, {
|
||||
to: article.link
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<img${ssrRenderAttr("src", article.image)}${ssrRenderAttr("alt", article.title)} data-v-06bedca9${_scopeId}>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("img", {
|
||||
src: article.image,
|
||||
alt: article.title
|
||||
}, null, 8, ["src", "alt"])
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent));
|
||||
_push(`</div><div class="blog-page__single-content" data-v-06bedca9><ul class="meta-box" data-v-06bedca9><li data-v-06bedca9><a href="#" data-v-06bedca9><i class="icon-user-2" data-v-06bedca9></i> توسط ادمین</a></li><li data-v-06bedca9><a href="#" data-v-06bedca9><i class="icon-open-file" data-v-06bedca9></i> ${ssrInterpolate(article.category)}</a></li><li data-v-06bedca9><a href="#" data-v-06bedca9><i class="icon-speech-bubble" data-v-06bedca9></i> نظرات (0)</a></li></ul><div class="title" data-v-06bedca9><h2 data-v-06bedca9>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, {
|
||||
to: article.link
|
||||
}, null, _parent));
|
||||
_push(`</h2></div><div class="text-box" data-v-06bedca9><p data-v-06bedca9>${highlightText(article.excerpt, searchTerm.value) ?? ""}</p></div><div class="btn-box" data-v-06bedca9>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, {
|
||||
to: article.link
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`بیشتر بخوانید <span class="icon-plus-1" data-v-06bedca9${_scopeId}></span>`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("بیشتر بخوانید "),
|
||||
createVNode("span", { class: "icon-plus-1" })
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 2
|
||||
}, _parent));
|
||||
_push(`</div></div></div>`);
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
if (totalPages.value > 1) {
|
||||
_push(`<ul class="styled-pagination clearfix" data-v-06bedca9>`);
|
||||
if (currentPage.value > 1) {
|
||||
_push(`<li data-v-06bedca9><a href="#" class="pagination-prev" data-v-06bedca9><span class="icon-right-arrow-2" data-v-06bedca9></span></a></li>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`<!--[-->`);
|
||||
ssrRenderList(pageNumbers.value, (page) => {
|
||||
_push(`<li class="${ssrRenderClass({ "arrow next": page === 1, "active": currentPage.value === page })}" data-v-06bedca9><a href="#" data-v-06bedca9>${ssrInterpolate(String(page).padStart(2, "0"))}</a></li>`);
|
||||
});
|
||||
_push(`<!--]-->`);
|
||||
if (currentPage.value < totalPages.value) {
|
||||
_push(`<li data-v-06bedca9><a href="#" class="pagination-next" data-v-06bedca9><span class="icon-left-arrow-2" data-v-06bedca9></span></a></li>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</ul>`);
|
||||
} else {
|
||||
_push(`<!---->`);
|
||||
}
|
||||
_push(`</div></div><div class="col-xl-4 col-lg-5" data-v-06bedca9><div class="sidebar" data-v-06bedca9><div class="sidebar__single sidebar__search" data-v-06bedca9><div class="title-box" data-v-06bedca9><h2 data-v-06bedca9>جستجو</h2></div><form class="sidebar__search-form" data-v-06bedca9><input${ssrRenderAttr("value", searchTerm.value)} type="search" placeholder="عبارت مورد نظر را وارد کنید" data-v-06bedca9><button type="submit" data-v-06bedca9><i class="icon-loupe" data-v-06bedca9></i></button></form></div><div class="sidebar__single sidebar__category" data-v-06bedca9><div class="title-box" data-v-06bedca9><h2 data-v-06bedca9>دستهبندی</h2></div><ul class="sidebar__category-list" data-v-06bedca9><!--[-->`);
|
||||
ssrRenderList(categories, (cat) => {
|
||||
_push(`<li class="${ssrRenderClass({ "active": activeCategory.value === cat.id })}" data-v-06bedca9><a href="#" data-v-06bedca9><span class="square-box" data-v-06bedca9></span> ${ssrInterpolate(cat.label)}</a></li>`);
|
||||
});
|
||||
_push(`<!--]--></ul></div><div class="sidebar__single sidebar__tag" data-v-06bedca9><div class="title-box" data-v-06bedca9><h2 data-v-06bedca9>برچسبها</h2></div><ul class="sidebar__tag-list clearfix" data-v-06bedca9><li data-v-06bedca9><a href="#" data-v-06bedca9>طراحی وب</a></li><li data-v-06bedca9><a href="#" data-v-06bedca9>اپلیکیشن موبایل</a></li><li data-v-06bedca9><a href="#" data-v-06bedca9>سئو</a></li><li data-v-06bedca9><a href="#" data-v-06bedca9>طراحی گرافیک</a></li><li data-v-06bedca9><a href="#" data-v-06bedca9>ربات تلگرام</a></li><li data-v-06bedca9><a href="#" data-v-06bedca9>بازاریابی دیجیتال</a></li></ul></div></div></div></div></div></section></div><div class="search-popup" data-v-06bedca9><div class="search-popup__overlay search-toggler" data-v-06bedca9><div class="search-close-btn" data-v-06bedca9><i class="icon-plus" data-v-06bedca9></i></div></div><div class="search-popup__content" data-v-06bedca9><form action="#" data-v-06bedca9><label for="search" class="sr-only" data-v-06bedca9>اینجا جستجو کنید</label><input type="text" id="search" placeholder="اینجا جستجو کنید..." data-v-06bedca9><button type="submit" aria-label="ارسال جستجو" class="btn-one" data-v-06bedca9><i class="icon-loupe" data-v-06bedca9></i></button></form></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("main/mainPage/components/BlogPage.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const BlogPage = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-06bedca9"]]);
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "blogPage",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useSeoMeta({
|
||||
title: "وبلاگ اپ کو (Appco) | وبلاگ کلاسیک",
|
||||
description: "وبلاگ کلاسیک اپ کو (Appco) شامل مقالات آموزشی، تحلیلی و تخصصی در حوزه فناوری، طراحی و توسعه محصولات دیجیتال است. در وبلاگ اپ کو میتوانید مطالب کاربردی درباره طراحی، توسعه وب و اپلیکیشن و ترندهای دنیای دیجیتال را مطالعه کنید.",
|
||||
ogTitle: "وبلاگ اپ کو (Appco) | وبلاگ کلاسیک",
|
||||
ogDescription: "وبلاگ کلاسیک اپ کو (Appco) شامل مقالات آموزشی، تحلیلی و تخصصی در حوزه فناوری، طراحی و توسعه محصولات دیجیتال است. در وبلاگ اپ کو میتوانید مطالب کاربردی درباره طراحی، توسعه وب و اپلیکیشن و ترندهای دنیای دیجیتال را مطالعه کنید.",
|
||||
ogImage: "/favicon.ico"
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(BlogPage, _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/blogPage.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=blogPage-DCBh95le.mjs.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"blogPage-DCBh95le.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/blogPage-DCBh95le.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -1,46 +0,0 @@
|
||||
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 };
|
||||
@@ -1,46 +0,0 @@
|
||||
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 };
|
||||
@@ -1,98 +0,0 @@
|
||||
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 };
|
||||
+600
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"chetor-branding-takhasosi-mitavanad-kasbokar-ra-motamayez-konad-RxrJNqRa.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/chetor-branding-takhasosi-mitavanad-kasbokar-ra-motamayez-konad-RxrJNqRa.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"client.precomputed.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/client.precomputed.mjs"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -1,3 +0,0 @@
|
||||
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,27 @@
|
||||
import { hasInjectionContext, inject } from 'vue';
|
||||
import { a as useNuxtApp } from './server.mjs';
|
||||
import { u as useHead$1, h as headSymbol, a as useSeoMeta$1 } from '../routes/renderer.mjs';
|
||||
|
||||
function injectHead(nuxtApp) {
|
||||
const nuxt = nuxtApp || useNuxtApp();
|
||||
return nuxt.ssrContext?.head || nuxt.runWithContext(() => {
|
||||
if (hasInjectionContext()) {
|
||||
const head = inject(headSymbol);
|
||||
if (!head) {
|
||||
throw new Error("[nuxt] [unhead] Missing Unhead instance.");
|
||||
}
|
||||
return head;
|
||||
}
|
||||
});
|
||||
}
|
||||
function useHead(input, options = {}) {
|
||||
const head = options.head || injectHead(options.nuxt);
|
||||
return useHead$1(input, { head, ...options });
|
||||
}
|
||||
function useSeoMeta(input, options = {}) {
|
||||
const head = options.head || injectHead(options.nuxt);
|
||||
return useSeoMeta$1(input, { head, ...options });
|
||||
}
|
||||
|
||||
export { useHead as a, useSeoMeta as u };
|
||||
//# sourceMappingURL=composables-Coz3KJnj.mjs.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"composables-Coz3KJnj.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/composables-Coz3KJnj.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -0,0 +1,105 @@
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrInterpolate } from 'vue/server-renderer';
|
||||
import { _ as __nuxt_component_0 } from './Header-JmiC84XK.mjs';
|
||||
import { computed, mergeProps, unref, useSSRContext } from 'vue';
|
||||
import { u as useRoute } from './server.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { u as useSeoMeta } from './composables-Coz3KJnj.mjs';
|
||||
import './nuxt-link-DNSfp6ul.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 './logo-1-CUpaHlTZ.mjs';
|
||||
import 'pinia';
|
||||
import 'vue-router';
|
||||
import 'dayjs';
|
||||
import 'dayjs/plugin/updateLocale.js';
|
||||
import 'dayjs/plugin/relativeTime.js';
|
||||
import 'dayjs/plugin/utc.js';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main$1 = {
|
||||
__name: "ContactPage",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const route = useRoute();
|
||||
const serviceContent = {
|
||||
design: {
|
||||
title: "مشاوره رایگان برای طراحی اختصاصی سایت",
|
||||
description: "طراحی وبسایت حرفهای و طراحی اختصاصی سایت با تمرکز بر UI/UX و هویت بصری برند شما. تیم اپ کو (AppCo) برای ساخت سایت شرکتی، فروشگاهی و وباپلیکیشن با طراحی ریسپانسیو و تجربه کاربری بهینه، مشاوره رایگان طراحی سایت ارائه میدهد. از طریق راههای ارتباطی زیر با اپ کو (Appco) در تماس باشید."
|
||||
},
|
||||
performance: {
|
||||
title: "مشاوره رایگان برای بهینهسازی عملکرد",
|
||||
description: "بهینهسازی سرعت سایت و بهبود عملکرد وبسایت برای رتبهگیری بهتر در گوگل. در اپ کو (Appco) با افزایش سرعت بارگذاری صفحه، بهبود Core Web Vitals و سئو تکنیکال، تجربه کاربری بهتری در موبایل و دسکتاپ برای شما فراهم میکنیم. مشاوره رایگان بهینهسازی سرعت و سئو سایت از تیم اپ کو (Appco) از طریق راههای ارتباطی زیر."
|
||||
},
|
||||
support: {
|
||||
title: "مشاوره رایگان برای پشتیبانی و ارتقا",
|
||||
description: "پشتیبانی فنی وبسایت و نگهداری سایت پس از تحویل پروژه در اپ کو (Appco): آپدیت امنیتی، بکاپ منظم و توسعه مرحلهای. برای مشاوره رایگان درباره پشتیبانی و نگهداری وبسایت و رشد آنلاین پایدار کسبوکارتان، از طریق راههای ارتباطی زیر با تیم اپ کو (Appco) در تماس باشید."
|
||||
},
|
||||
default: {
|
||||
title: "پیام خود را برای ما ارسال کنید",
|
||||
description: "در اپ کو (AppCo) همیشه آماده شنیدن ایدهها، سوالات و پیشنهادهای شما هستیم. اگر قصد شروع یک پروژه جدید دارید، به مشاوره نیاز دارید یا میخواهید بیشتر با خدمات اپ کو (AppCo) آشنا شوید، از طریق راههای ارتباطی با ما در تماس باشید. تیم اپ کو (AppCo) تلاش میکند در کوتاهترین زمان ممکن پاسخگوی پیامهای شما باشد و بهترین راهکار را متناسب با نیازتان ارائه دهد. منتظر ارتباط با شما هستیم."
|
||||
}
|
||||
};
|
||||
const currentService = computed(() => {
|
||||
const service = route.query.service;
|
||||
const key = typeof service === "string" ? service : "";
|
||||
if (key && key in serviceContent && key !== "default") {
|
||||
return serviceContent[key];
|
||||
}
|
||||
return serviceContent.default;
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_Header = __nuxt_component_0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: "body-dark-bg",
|
||||
dir: "rtl"
|
||||
}, _attrs))} data-v-8551cbb2>`);
|
||||
_push(ssrRenderComponent(_component_Header, null, null, _parent));
|
||||
_push(`<section class="contact-page contact-page--styled" data-v-8551cbb2><div class="container" data-v-8551cbb2><div class="row contact-page__row" data-v-8551cbb2><div class="col-xl-12 col-lg-12" data-v-8551cbb2><div class="contact-page__form" data-v-8551cbb2><div class="contact-page__intro" data-v-8551cbb2><h2 class="contact-page__title" data-v-8551cbb2>${ssrInterpolate(unref(currentService).title)}</h2><p class="contact-page__desc" data-v-8551cbb2>${ssrInterpolate(unref(currentService).description)}</p></div><div class="contact-page__soon" data-v-8551cbb2><div class="contact-page__soon-icon" data-v-8551cbb2><span class="icon-envelope" data-v-8551cbb2></span></div><h3 class="contact-page__soon-title" data-v-8551cbb2>فرم تماس به زودی فعال میشود</h3><p class="contact-page__soon-text" data-v-8551cbb2> اکنون میتوانید از طریق راههای زیر با ما در ارتباط باشید. </p></div><div class="contact-page__sidebar" data-v-8551cbb2><div class="contact-page__cards" data-v-8551cbb2><a href="https://maps.google.com/?q=اصفهان+هشت+بهشت+غربی+گلزار+جنوبی" target="_blank" rel="noopener" class="contact-page__card contact-page__card--address" data-v-8551cbb2><div class="contact-page__card-icon" data-v-8551cbb2><span class="icon-pin" data-v-8551cbb2></span></div><div class="contact-page__card-body" data-v-8551cbb2><h3 class="contact-page__card-label" data-v-8551cbb2>آدرس</h3><p class="contact-page__card-text" data-v-8551cbb2> ایران، اصفهان، خیابان هشت بهشت غربی<br data-v-8551cbb2> خیابان گلزار جنوبی، روبروی کوچه ۱۵، ساختمان نگار، طبقه دوم </p></div></a><div class="contact-page__card" data-v-8551cbb2><div class="contact-page__card-icon" data-v-8551cbb2><span class="icon-envelope" data-v-8551cbb2></span></div><div class="contact-page__card-body" data-v-8551cbb2><h3 class="contact-page__card-label" data-v-8551cbb2>ایمیل</h3><p class="contact-page__card-text" data-v-8551cbb2><a href="mailto:app.appco.app@gmail.com" data-v-8551cbb2>app.appco.app@gmail.com</a><br data-v-8551cbb2><a href="mailto:admin@appco.app" data-v-8551cbb2>admin@appco.app</a></p></div></div><div class="contact-page__card contact-page__card--phone" data-v-8551cbb2><div class="contact-page__card-icon" data-v-8551cbb2><span class="icon-call" data-v-8551cbb2></span></div><div class="contact-page__card-body" data-v-8551cbb2><h3 class="contact-page__card-label" data-v-8551cbb2>تلفن</h3><p class="contact-page__card-text" data-v-8551cbb2><a href="tel:+989373717154" dir="ltr" data-v-8551cbb2>(+98) 9373717154</a><br data-v-8551cbb2><a href="tel:+989134469985" dir="ltr" data-v-8551cbb2>(+98) 9134469985</a></p></div></div></div></div></div></div></div></div></section></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("main/mainPage/components/ContactPage.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const ContactPage = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-8551cbb2"]]);
|
||||
const _sfc_main = {
|
||||
__name: "contactPage",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useSeoMeta({
|
||||
title: "تماس با اپ کو (Appco) | تماس با ما",
|
||||
description: "ارتباط با اپ کو (AppCo)؛ برای مشاوره، ثبت درخواست پروژه و دریافت اطلاعات بیشتر درباره خدمات طراحی و توسعه وب و اپلیکیشن با ما در تماس باشید. از طریق صفحه ارتباط با ما در اپ کو با تیم ما در تماس باشید و سوالات یا درخواستهای خود را مطرح کنید.",
|
||||
ogTitle: "تماس با اپ کو (AppCo) | تماس با ما",
|
||||
ogDescription: "ارتباط با اپ کو (AppCo)؛ برای مشاوره، ثبت درخواست پروژه و دریافت اطلاعات بیشتر درباره خدمات طراحی و توسعه وب و اپلیکیشن با ما در تماس باشید. از طریق صفحه ارتباط با ما در اپ کو با تیم ما در تماس باشید و سوالات یا درخواستهای خود را مطرح کنید.",
|
||||
ogImage: "/favicon.ico"
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(ContactPage, _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/contactPage.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=contactPage-Dmsf3_eI.mjs.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"contactPage-Dmsf3_eI.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/contactPage-Dmsf3_eI.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -1,46 +0,0 @@
|
||||
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 };
|
||||
@@ -1,952 +0,0 @@
|
||||
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 };
|
||||
@@ -1,187 +0,0 @@
|
||||
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,128 @@
|
||||
import { _ as __nuxt_component_0, L as Logo } from './Header-JmiC84XK.mjs';
|
||||
import { _ as __nuxt_component_0$1 } from './nuxt-link-DNSfp6ul.mjs';
|
||||
import { unref, defineComponent, mergeProps, withCtx, createTextVNode, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrRenderComponent, ssrRenderStyle, ssrRenderSlot, ssrRenderAttr } from 'vue/server-renderer';
|
||||
import { _ as _imports_0 } from './footer-blog-1-CJfdcVqa.mjs';
|
||||
import { defineStore } from 'pinia';
|
||||
import Loading from './loading-BlVb6W1C.mjs';
|
||||
import { b as useRouter } from './server.mjs';
|
||||
import './logo-1-CUpaHlTZ.mjs';
|
||||
import './_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 'vue-router';
|
||||
import 'dayjs';
|
||||
import 'dayjs/plugin/updateLocale.js';
|
||||
import 'dayjs/plugin/relativeTime.js';
|
||||
import 'dayjs/plugin/utc.js';
|
||||
|
||||
const _imports_1 = "data:image/webp;base64,UklGRloDAABXRUJQVlA4IE4DAADQEQCdASpQAFAAPrFInUmnJCKhNHMMcOAWCWkAEhF6njNDLe57OPWYd+Goyv7XVigeYf39eO7vzB4op27+ARBzuUv0524OcD3UriYm7BeVDmc0BdaTODvAMUS2vssWmgLvQf9xuAb/SAXSNN9DgnsH1gQeTYk8rBwPOYISc6Fp8JQb9Dmk1u5VYGtWkSmckhz5t2f00kSoAP76NWAaztuRrjvPeaagDoeWY6xuq9AI2jPq8UTmAs6piXv1f4H+PbUKJC0nMzINP+OSpeHeihsPa7AskXgAqB4e9Cz3/FMVPYlWRjWAOzUSthHWD4GGT9nXCiNwpDq9Hy7eB4k1NDmAFqaKFm/vEiowoxMeiBSrk7cfK9PAONofe7p+RH7ZRPZks5Eu6HtiYlZxdHNpx/94VGhawy8yplXCdP68/jkGSd6tmX1+1s/v7/4W5Susbqmcq3S20ffP8a65RTqF1DPj9cLMDm5ZE/j+ZV4hntSFCBOb73FsHdXqNRhEEGq+qocq3J1nSiQmHYZt1SFZVFBusq3+9eMOJaSCk7a8WZyy+nHdz4yHwsy5ni+BbiEkCeth+2G5LN3MM0zmiUjgFmZk3vVB4nFO0Kg+gjSesB/n2JeE6unorxIs/FHHK/1zplrlyc1EbjeATnWEj7HjdH+X1kioolxrghVD2aNjtu1m82kG36ZwGtXnpyYpz6RNvqaB8vBHKmlX2PeV6K9equCrx7Z4wjbGMHV6F/73oe3HgCf/smwhF3bmT5IIjft1AH3E/HdW1AUVrq8iSXYweTln3AkzXiEzoPGsB76z/qwXxl8ZCIIpniG6Q4lnX7R4o7bsjbi10bvQGa6O29U5YjmOsURYju0X1vke0KmzrTSjU7wkPuniVDXLCS6mMm8TX0n9nqFlYx07dbZsuUuc57bhykksVFqpLjdmcJd4pKqIwkeyBDm8mVWC1mDAUZIrJ+AI19lkinOHOIgpGersmZ0Nd99uR6viYwZhMGZNvAWrPmLZqk1YaazY0pO3tyxm6EokfkyDClYvYpBOTt0xiEv39E1Y8S/Cilgy9X6EL1xCMyis5sqzC54qVHqk9/KcLuHkn7S5JOtq0OgJ3eqrGuuSmw3oMD7jsP5cZPongAA=";
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "Footer",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_NuxtLink = __nuxt_component_0$1;
|
||||
_push(`<footer${ssrRenderAttrs(mergeProps({
|
||||
class: "footer-one body-dark-bg",
|
||||
dir: "rtl"
|
||||
}, _attrs))}><div class="footer-main container"><div class="container"><div class="row"><div class="col-xl-3 col-lg-6 col-md-6 wow animated fadeInUp" data-wow-delay="0.1s"><div class="single-footer-widget"><div class="our-company-info"><div class="footer-logo-one"><a href="index-2.html">`);
|
||||
_push(ssrRenderComponent(Logo, { size: "10rem" }, null, _parent));
|
||||
_push(`</a></div><div class="text"><p> ارائهدهنده راهکارهای جامع در حوزه طراحی و توسعه وب، اتوماسیون پیامرسانها، مدیریت شبکههای اجتماعی و برندینگ. همراه شما هستیم تا کسبوکارتان را در دنیای دیجیتال به بهترین شکل رشد دهیم. </p></div><div class="footer-social-link"><ul class="clearfix"><li><a href="https://instagram.com/appco.app" target="_blank" rel="noopener"><i class="icon-instagram"></i></a></li><li><a href="https://t.me/989373717154" target="_blank" rel="noopener"><i class="fab fa-telegram"></i></a></li><li><a href="https://wa.me/989373717154" target="_blank" rel="noopener"><i class="fab fa-whatsapp"></i></a></li></ul></div></div></div></div><div class="col-xl-3 col-lg-6 col-md-6 mt-8 md:mt-unset wow animated fadeInUp" data-wow-delay="0.2s"><div class="single-footer-widget"><div class="title"><h3>لینکهای رایگان</h3></div><div class="footer-widget-links"><ul><li><a href="ai-lnsights.html"><i class="fa fa-chevron-left"></i>توسعه نرمافزار</a></li><li><a href="ai-lnsights.html"><i class="fa fa-chevron-left"></i>تحلیل داده</a></li><li><a href="ai-lnsights.html"><i class="fa fa-chevron-left"></i>مشاوره IT</a></li><li><a href="ai-lnsights.html"><i class="fa fa-chevron-left"></i>طراحی UI/UX</a></li><li><a href="ai-lnsights.html"><i class="fa fa-chevron-left"></i>راهکارهای شبکه</a></li><li><a href="ai-lnsights.html"><i class="fa fa-chevron-left"></i>سایر موارد</a></li></ul></div></div></div><div class="col-xl-3 col-lg-6 mt-8 md:mt-unset col-md-6 wow animated fadeInUp" data-wow-delay="0.3s"><div class="single-footer-widget"><div class="title"><h3>آدرس</h3></div><div class="footer-widget-contact-info"><ul><li><div class="icon-box"><span class="icon-paper-plane"></span></div><div class="text-box"><p> ایران ، اصفهان خیابان هشت بهشت غربی<br> خیابان گلزار جنوبی روبروی کوچه 15، ساختمان نگار، طبقه دوم </p></div></li><li><div class="icon-box"><span class="icon-envelope"></span></div><div class="text-box"><p><a href="mailto:app.appco.app@gmail.com">app.appco.app@gmail.com</a><br><a href="mailto:admin@appco.app">admin@appco.app</a></p></div></li><li><div class="icon-box"><span class="icon-call"></span></div><div class="text-box"><p><a href="tel:+989134469985" dir="ltr">(+98) 9134469985</a><br><a href="tel:+989373717154" dir="ltr">(+98) 9373717154</a></p></div></li></ul></div></div></div><div class="col-xl-3 col-lg-6 mt-8 md:mt-unset col-md-6 wow animated fadeInUp" data-wow-delay="0.4s"><div class="single-footer-widget"><div class="title"><h3>وبلاگهای اخیر</h3></div><div class="footer-widget-blog-info"><ul><li><div class="footer-blog-thumb"><img${ssrRenderAttr("src", _imports_0)} alt="appco"></div><div class="footer-blog-text"><span><i class="fa-solid fa-calendar-days"></i>11 مهر، 1403</span><h3>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/blog/mazaye-tarahi-site-ekhtesasi" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(` مزایای طراحی سایت اختصاصی`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode(" مزایای طراحی سایت اختصاصی")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</h3></div></li><li><div class="footer-blog-thumb"><img${ssrRenderAttr("src", _imports_1)} alt="appco"></div><div class="footer-blog-text"><span><i class="fa-solid fa-calendar-days"></i>11 مهر، 1403</span><h3>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/blog/chetor-branding-takhasosi-mitavanad-kasbokar-ra-motamayez-konad" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`چطور برندینگ تخصصی میتواند کسبوکار شما را از رقبا متمایز کند؟`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("چطور برندینگ تخصصی میتواند کسبوکار شما را از رقبا متمایز کند؟")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</h3></div></li></ul></div></div></div></div></div></div><div class="footer-bottom"><div class="container"><div class="row align-items-center"><div class="col-xl-6 col-lg-6"><div class="copyright-text"><p>©تکلب 2024 | تمامی حقوق محفوظ است</p></div></div><div class="col-xl-6 col-lg-6 text-end"><div class="copyright-menu"><ul><li><a href="about.html">شرایط و قوانین</a></li><li><a href="about.html">حریم خصوصی</a></li><li><a href="contact.html">تماس با ما</a></li></ul></div></div></div></div></div></footer>`);
|
||||
};
|
||||
}
|
||||
});
|
||||
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/Footer.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const __nuxt_component_1 = Object.assign(_sfc_main$1, { __name: "Footer" });
|
||||
const useLoadingStore = defineStore("loading", {
|
||||
state: () => ({
|
||||
loading: false
|
||||
}),
|
||||
actions: {
|
||||
start() {
|
||||
this.loading = true;
|
||||
},
|
||||
finish() {
|
||||
this.loading = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
const _sfc_main = {
|
||||
__name: "default",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const loadingStore = useLoadingStore();
|
||||
const router = useRouter();
|
||||
router.beforeEach((to, from, next) => {
|
||||
loadingStore.start();
|
||||
next();
|
||||
});
|
||||
router.afterEach(() => {
|
||||
setTimeout(() => {
|
||||
loadingStore.finish();
|
||||
}, 500);
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_Header = __nuxt_component_0;
|
||||
const _component_Footer = __nuxt_component_1;
|
||||
_push(`<div${ssrRenderAttrs(_attrs)}>`);
|
||||
_push(ssrRenderComponent(_component_Header, null, null, _parent));
|
||||
_push(ssrRenderComponent(Loading, {
|
||||
show: unref(loadingStore).loading
|
||||
}, null, _parent));
|
||||
_push(`<div style="${ssrRenderStyle(!unref(loadingStore).loading ? null : { display: "none" })}">`);
|
||||
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
||||
_push(`</div>`);
|
||||
_push(ssrRenderComponent(_component_Footer, null, null, _parent));
|
||||
_push(`<div class="cursor-dot"></div><div class="cursor-outline"></div></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 };
|
||||
//# sourceMappingURL=default-DJeSjFx5.mjs.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"default-DJeSjFx5.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/default-DJeSjFx5.js"],"names":["__nuxt_component_0","__nuxt_component_0$1"],"mappings":"","x_google_ignoreList":[0]}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"designPage-ByCF2WZ_.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/designPage-ByCF2WZ_.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -1,139 +0,0 @@
|
||||
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 };
|
||||
@@ -1,46 +0,0 @@
|
||||
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 };
|
||||
@@ -1,3 +0,0 @@
|
||||
const empty_user = "" + __buildAssetsURL("empty_user.DjvjY29X.png");
|
||||
|
||||
export { empty_user as e };
|
||||
@@ -0,0 +1,101 @@
|
||||
import { _ as __nuxt_component_0 } from './nuxt-link-DNSfp6ul.mjs';
|
||||
import { mergeProps, withCtx, createTextVNode, toDisplayString, useSSRContext } from 'vue';
|
||||
import { ssrRenderAttrs, ssrInterpolate, ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { a as useHead } from './composables-Coz3KJnj.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 './server.mjs';
|
||||
import 'pinia';
|
||||
import 'vue-router';
|
||||
import 'dayjs';
|
||||
import 'dayjs/plugin/updateLocale.js';
|
||||
import 'dayjs/plugin/relativeTime.js';
|
||||
import 'dayjs/plugin/utc.js';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
|
||||
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 };
|
||||
//# sourceMappingURL=error-404-CSP7TEpQ.mjs.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"error-404-CSP7TEpQ.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/error-404-CSP7TEpQ.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
+13
-13
@@ -1,7 +1,8 @@
|
||||
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 { a as useHead } from './composables-Coz3KJnj.mjs';
|
||||
import './server.mjs';
|
||||
import '../nitro/nitro.mjs';
|
||||
import 'node:http';
|
||||
import 'node:https';
|
||||
@@ -12,19 +13,17 @@ 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 'vue-router';
|
||||
import 'dayjs';
|
||||
import 'dayjs/plugin/updateLocale.js';
|
||||
import 'dayjs/plugin/relativeTime.js';
|
||||
import 'dayjs/plugin/utc.js';
|
||||
import '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _sfc_main = {
|
||||
@@ -81,3 +80,4 @@ _sfc_main.setup = (props, ctx) => {
|
||||
const error500 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d7edb62b"]]);
|
||||
|
||||
export { error500 as default };
|
||||
//# sourceMappingURL=error-500-XUnytaib.mjs.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"error-500-XUnytaib.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/error-500-XUnytaib.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
||||
const _imports_0 = "data:image/webp;base64,UklGRhAEAABXRUJQVlA4IAQEAADQFACdASpQAFAAPrVQoE0nJCKiJnZtMOAWiWkAEhF6mTH6oODGY+wl+wuv0Yc48/gMzPyqw3pzmAAi6ExuPxNKyW9CW7Zm4Ay9U3slyUj9gF3Zv3P5jtyOHVLQQEcLLV3l0NXB/kpvLLJh91N9aOyJoPG2Vzul67QYtpHw7EN0uttsQySGar7sZeZqhs17nKZeRR7UJaF81NnKrdZR9SyTSKRIwbXjocSv85pxs84AAP7+hud9vCv8r9PboWTU+OJZYC3cOx4U49NnQnUcdMFQ+eRKzMkktiHvs+2Uk0zyXhk4nPRb+Ajnlqg5SZga893aTm6FpcXgUzvVOECf1g/tpqZUanN0LdIDL0M7ZV3rg5/Ubq3Qa06jC0+g/by5Z+mOO9g0vBTccLVfJdfx+fOvz75Oa7CyNhiKhxv6NHIUnuS/5OW4AzL98DfddHA6y8QMGtD1D4CV+Q00nGAuojJlqVWKIuI1+4QihweZ3Ts+NfEpeeWJ+vbpbJ1fcM4ToMRCLB3nHLe7DZN/2Stj1Kfl2syVfOLDPryObD3UGgYHoI200RFrApB+bF4w/GLJLOaXj+QY9SSdKZuDq0cQTN3OJhp1RvHL64HbyyRURXU3UUl1MvEiMbzurupv/z0x6Eqmj4thQaxkCtiFlcCYmMI70HAA+DMKU2nD2ywkqYhSCVtdUH3W6DFB67cg3RZftUFUgQi24Drz4OLrJxaXAeytZrh6dehF6JcEPnf1tsvvT0MbCPjK8zfWzTiOtnTERU0a8kVVA/I5APmhOG2tlr2/8d9fOE5cx5a7bt3y4pYJz/0Yghx6oXWmHNYcWCGl1evmGN7HQTpp8N6141S0b4U2PFxPcrRxQYjFPLueu0srjRiFEDPoXs6WTjEe8KdU8uOteMqBQyB/4Viet8bPWeaBF7lnRhkth+nWCTM4XIlAqYxLGZCvDY1PY4U+o+WKaiRA0CRsHvF5M+j9LRA9ho/2AwUSWAh0JtW0h8Q/c2UjY/fv755yhLKHQxswoLdbBEKEU4UU31n3Odop58JSOeHwi9jdsqLnmyXV2C6b58+By8Vf7eHJMtVhzUFuKYH/Z6hte/wKokdiS58Xz0MUwqNg3RQ+wwVwc6q/7lQ6Hihoe/2XjYvlDZ4qBPfdR63ZK75c7MZL16EUHKcuk4F/YrtoxHnKTJiqAjk8Ggof/h7L2gU3vJ3drQy1LB8GlWl5NLG1Iwnzv2mkzsJ7IT2kGK566dTFFgNvXIIotC7w9eyzKxeFoaZaoH8Li7RPDgXa7au8elLTwW3BLtKxcVaKhxFcp/+TE7AkH38K/hXR4UQfeQsfcDh/Q92BTkaKKUUEaeP87GxZ5xhh1reqCyFMUgIGowAAAA==";
|
||||
|
||||
export { _imports_0 as _ };
|
||||
//# sourceMappingURL=footer-blog-1-CJfdcVqa.mjs.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"footer-blog-1-CJfdcVqa.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/footer-blog-1-CJfdcVqa.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"graphicDesign-CAzijQRL.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/graphicDesign-CAzijQRL.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -1,149 +0,0 @@
|
||||
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,617 @@
|
||||
import { defineComponent, ref, mergeProps, withCtx, createTextVNode, unref, createVNode, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent, ssrRenderAttrs, ssrRenderStyle, ssrRenderAttr, ssrRenderClass } from 'vue/server-renderer';
|
||||
import { _ as __nuxt_component_0 } from './nuxt-link-DNSfp6ul.mjs';
|
||||
import { p as publicAssetsURL } from '../nitro/nitro.mjs';
|
||||
import { _ as _imports_0$1 } from './footer-blog-1-CJfdcVqa.mjs';
|
||||
import { u as useProjectImage } from './useProjectImage-Q60UeTNB.mjs';
|
||||
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
||||
import { u as useSeoMeta, a as useHead } from './composables-Coz3KJnj.mjs';
|
||||
import './server.mjs';
|
||||
import 'pinia';
|
||||
import 'vue-router';
|
||||
import 'dayjs';
|
||||
import 'dayjs/plugin/updateLocale.js';
|
||||
import 'dayjs/plugin/relativeTime.js';
|
||||
import 'dayjs/plugin/utc.js';
|
||||
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 '../routes/renderer.mjs';
|
||||
import 'vue-bundle-renderer/runtime';
|
||||
import 'unhead/server';
|
||||
import 'devalue';
|
||||
import 'unhead/plugins';
|
||||
import 'unhead/utils';
|
||||
|
||||
const _imports_0 = publicAssetsURL("/assets/img/weblog/cost-to-build-a-wordpress-website.webp");
|
||||
const _imports_1 = publicAssetsURL("/assets/img/weblog/hidden cost.webp");
|
||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||
__name: "BlogDetailsPagePricing",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
const { projectImageUrl } = useProjectImage();
|
||||
const backgroundStyle = {
|
||||
background: `
|
||||
radial-gradient(circle at 20% 30%, rgba(35, 63, 146, 0.4) 0%, transparent 50%),
|
||||
radial-gradient(circle at 80% 70%, rgba(100, 116, 162, 0.3) 0%, transparent 50%),
|
||||
linear-gradient(135deg, #0d1530 0%, #1a1f3a 25%, #233f92 50%, #1a1a1c 75%, #0a0a0c 100%)
|
||||
`
|
||||
};
|
||||
const tocOpen = ref(true);
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
const _component_NuxtLink = __nuxt_component_0;
|
||||
_push(`<div${ssrRenderAttrs(mergeProps({
|
||||
class: "fix body-dark-bg",
|
||||
style: { "direction": "rtl" }
|
||||
}, _attrs))} data-v-b3ff7683><section class="page-header" data-v-b3ff7683><div class="page-header__bg" style="${ssrRenderStyle(backgroundStyle)}" data-v-b3ff7683></div><div class="container" data-v-b3ff7683><div class="page-header__inner" data-v-b3ff7683><h1 data-v-b3ff7683>هزینه طراحی سایت در ۱۴۰۵ — راهنمای کامل قیمتگذاری</h1><ul class="thm-breadcrumb" data-v-b3ff7683><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`صفحه اصلی`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("صفحه اصلی")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683><span data-v-b3ff7683>/</span></li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/blogPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`بلاگ`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("بلاگ")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683><span data-v-b3ff7683>/</span></li><li data-v-b3ff7683>هزینه طراحی سایت در ۱۴۰۵</li></ul></div></div></section><section class="blog-details" data-v-b3ff7683><div class="container" data-v-b3ff7683><div class="row" data-v-b3ff7683><div class="col-xl-8 col-lg-7" role="main" data-v-b3ff7683><div class="blog-details__content" data-v-b3ff7683><article class="blog-page__single" data-v-b3ff7683><div class="blog-page__single-img" data-v-b3ff7683><img${ssrRenderAttr("src", _imports_0)} alt="هزینه طراحی سایت در ۱۴۰۵ — راهنمای قیمتگذاری" data-v-b3ff7683></div><div class="blog-page__single-content" data-v-b3ff7683><ul class="meta-box" data-v-b3ff7683><li data-v-b3ff7683><a href="#" data-v-b3ff7683><i class="icon-user-2" data-v-b3ff7683></i> توسط ادمین</a></li><li data-v-b3ff7683><a href="#" data-v-b3ff7683><i class="icon-open-file" data-v-b3ff7683></i> طراحی سایت</a></li><li data-v-b3ff7683><a href="#" data-v-b3ff7683><i class="icon-speech-bubble" data-v-b3ff7683></i> نظرات (0)</a></li><li data-v-b3ff7683><a href="#" data-v-b3ff7683><i class="icon-calendar" data-v-b3ff7683></i> بهمن ۱۴۰۴</a></li></ul><div class="blog-details__content-text1" data-v-b3ff7683><nav class="blog-details__toc" aria-label="فهرست مطالب" data-v-b3ff7683><button type="button" class="blog-details__toc-toggle"${ssrRenderAttr("aria-expanded", tocOpen.value)} data-v-b3ff7683><span class="blog-details__toc-title" data-v-b3ff7683>فهرست مطالب</span><span class="${ssrRenderClass([{ "blog-details__toc-icon--open": tocOpen.value }, "blog-details__toc-icon"])}" aria-hidden="true" data-v-b3ff7683><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-b3ff7683><polyline points="6 9 12 15 18 9" data-v-b3ff7683></polyline></svg></span></button><ul class="blog-details__toc-list" style="${ssrRenderStyle(tocOpen.value ? null : { display: "none" })}" data-v-b3ff7683><li data-v-b3ff7683><a href="#cost-factors" data-v-b3ff7683>عوامل مؤثر بر هزینه طراحی سایت</a></li><li data-v-b3ff7683><a href="#price-range" data-v-b3ff7683>محدوده تقریبی قیمت طراحی سایت در ۱۴۰۵</a></li><li data-v-b3ff7683><a href="#site-types" data-v-b3ff7683>انواع سایت و حدود هزینه</a></li><li data-v-b3ff7683><a href="#hidden-costs" data-v-b3ff7683>هزینههای پنهان و نگهداری سایت</a></li><li data-v-b3ff7683><a href="#get-quote" data-v-b3ff7683>چگونه قیمت دقیق پروژه را بگیریم؟</a></li><li data-v-b3ff7683><a href="#conclusion" data-v-b3ff7683>نتیجهگیری</a></li></ul></nav><p data-v-b3ff7683> یکی از پرتکرارترین سوالاتی که صاحبان کسبوکار قبل از سفارش طراحی سایت میپرسند این است: «<strong data-v-b3ff7683>هزینه طراحی سایت چقدر است؟</strong>» پاسخ به این سوال به عوامل زیادی بستگی دارد؛ از نوع سایت و تعداد صفحات تا امکانات اختصاصی و تیم طراح. در این مقاله راهنمای کامل <strong data-v-b3ff7683>قیمت طراحی سایت در سال ۱۴۰۵</strong> را با شما مرور میکنیم تا با بودجه و انتظارات واقعبینانه وارد پروژه شوید. در `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`اپ کو`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("اپ کو")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(` ما شفافیت در قیمتگذاری و مشاوره قبل از شروع پروژه را اولویت میدانیم. </p><p data-v-b3ff7683> داشتن یک وبسایت حرفهای امروزه برای هر کسبوکاری ضروری است؛ اما قبل از شروع، درک درست از هزینهها و عوامل مؤثر بر آن به شما کمک میکند هم بودجه را درست برنامهریزی کنید و هم از تیم طراح انتظارات واقعبینانه داشته باشید. در ادامه بهصورت گامبهگام این عوامل و محدودههای تقریبی قیمت را بررسی میکنیم. </p><h2 id="cost-factors" data-v-b3ff7683>عوامل مؤثر بر هزینه طراحی سایت</h2><p data-v-b3ff7683> قبل از هر چیز باید بدانید که قیمت طراحی سایت یک عدد ثابت نیست. نوع پروژه، پیچیدگی طراحی، تعداد صفحات، امکانات (مثل <a href="https://fa.wikipedia.org/wiki/سامانه_مدیریت_محتوا" target="_blank" rel="noopener noreferrer" class="blog-details__link-external" data-v-b3ff7683>سیستم مدیریت محتوا</a>، پنل کاربری، درگاه پرداخت)، و اینکه سایت با قالب آماده ساخته شود یا بهصورت اختصاصی کدنویسی شود، همه روی هزینه نهایی تأثیر میگذارند. برای آشنایی با خدمات ما، `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/designPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`صفحه طراحی سایت اپ کو`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("صفحه طراحی سایت اپ کو")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(` را ببینید. </p><p data-v-b3ff7683><strong data-v-b3ff7683>نوع و اندازه پروژه:</strong> یک صفحه لندینگ ساده با چند بخش و فرم تماس، طبیعتاً هزینه کمتری دارد نسبت به یک سایت شرکتی دهصفحهای با گالری، وبلاگ و پنل مدیریت. سایت فروشگاهی با صدها محصول، فیلترها، سبد خرید و درگاه پرداخت هم بهدلیل حجم کار توسعه و تست، در رده قیمتی بالاتری قرار میگیرد. </p><p data-v-b3ff7683><strong data-v-b3ff7683>قالب آماده در مقابل طراحی اختصاصی:</strong> استفاده از قالب آماده (مثلاً وردپرس یا مشابه) و سفارشیسازی آن معمولاً سریعتر و ارزانتر است؛ اما محدودیت در طراحی و انعطاف دارد. در مقابل، طراحی و کدنویسی اختصاصی به شما کنترل کامل روی ظاهر، عملکرد و مقیاسپذیری میدهد و معمولاً برای پروژههای جدی و بلندمدت انتخاب بهتری است. در مقاله `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/blog/mazaye-tarahi-site-ekhtesasi" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`مزایای طراحی سایت اختصاصی`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("مزایای طراحی سایت اختصاصی")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(` میتوانید تفاوت این دو را بهتفصیل بخوانید. </p><p data-v-b3ff7683><strong data-v-b3ff7683>امکانات و ماژولهای اضافه:</strong> هر قابلیت اضافه مثل عضویت کاربران، پنل اختصاصی، اتصال به درگاه پرداخت، پنل ادمین پیشرفته، چندزبانگی، یا اپ تحت وب، زمان و هزینه توسعه را افزایش میدهد. بهتر است از همان ابتدا لیست امکانات مورد نیاز خود را با تیم طراح در میان بگذارید تا در پیشفاکتور لحاظ شود. </p><h2 id="price-range" data-v-b3ff7683>محدوده تقریبی قیمت طراحی سایت در ۱۴۰۵</h2><p data-v-b3ff7683> در ادامه محدودههای تقریبی را بر اساس نوع پروژه و روش اجرا (قالب آماده در مقابل سایت اختصاصی) مرور میکنیم. این اعداد فقط جهت تخمین و مقایسه است و برای پیشفاکتور دقیق بهتر است با تیم مشاوره در تماس باشید. نرخها میتوانند بسته به منطقه، تجربه تیم و کیفیت تحویل متفاوت باشند. </p><h3 id="site-types" data-v-b3ff7683>1. سایت با قالب آماده (مثلاً وردپرس)</h3><p data-v-b3ff7683> اگر با یک قالب آماده وردپرس یا مشابه، محتوا و لوگو و رنگها را سفارشی کنید، هزینه طراحی سایت معمولاً در محدوده چند میلیون تا حدود ۳۰–۵۰ میلیون تومان (بسته به تعداد صفحات، افزونهها و تنظیمات) قرار میگیرد. مناسب کسانی است که بودجه محدود دارند و در مرحله اول فقط به یک حضور آنلاین حرفهای نیاز دارند. اگر دوست دارید نمونه پروژههای طراحیشده با وردپرس و قالب آماده را ببینید، به صفحه `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/service/servicesPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`نمونه کارهای طراحی سایت اپ کو`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("نمونه کارهای طراحی سایت اپ کو")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(` سر بزنید. </p><p data-v-b3ff7683> در این روش، زمان تحویل هم معمولاً کوتاهتر است و میتوان در عرض چند هفته سایت را راهاندازی کرد. البته باید در نظر داشته باشید که قالبهای آماده گاهی برای امکانات خاص به سفارشیسازی یا افزونههای پولی نیاز دارند که میتواند هزینه نهایی را کمی بالا ببرد. </p><h3 data-v-b3ff7683>2. سایت شرکتی یا معرفی خدمات (اختصاصی)</h3><div class="blog-details__image-box" data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, {
|
||||
to: "/service/portfolio/24",
|
||||
class: "blog-details__portfolio-link blog-details__portfolio-link--single"
|
||||
}, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<img${ssrRenderAttr("src", unref(projectImageUrl)("img/project/hojrehbargh/fullPage.webp"))} alt="نمونه کار سایت شرکتی — حجره برق" data-v-b3ff7683${_scopeId}><span class="blog-details__portfolio-caption" data-v-b3ff7683${_scopeId}>نمونه کار سایت شرکتی — حجره برق · کلیک برای مشاهده جزئیات</span>`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("img", {
|
||||
src: unref(projectImageUrl)("img/project/hojrehbargh/fullPage.webp"),
|
||||
alt: "نمونه کار سایت شرکتی — حجره برق"
|
||||
}, null, 8, ["src"]),
|
||||
createVNode("span", { class: "blog-details__portfolio-caption" }, "نمونه کار سایت شرکتی — حجره برق · کلیک برای مشاهده جزئیات")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</div><p data-v-b3ff7683> طراحی سایت شرکتی اختصاصی با چند صفحه (درباره ما، تماس، خدمات)، طراحی اختصاصی و احتمالاً سئو پایه، در سال ۱۴۰۵ معمولاً از حدود ۵۰ تا ۱۵۰ میلیون تومان به بالا متغیر است. هرچه تعداد صفحات، انیمیشنها و امکانات بیشتر باشد، هزینه بالاتر میرود. </p><p data-v-b3ff7683> در این نوع پروژه، تمرکز روی هویت برند، خوانایی و تجربه کاربری است. اگر بهدنبال تمایز از رقبا و ظاهری کاملاً منحصربهفرد هستید، طراحی اختصاصی گزینه بهتری است و در بلندمدت با قابلیت توسعه و نگهداری راحتتر، میتواند توجیه اقتصادی داشته باشد. </p><h3 data-v-b3ff7683>3. سایت فروشگاهی (e-commerce)</h3><p data-v-b3ff7683> سایت فروشگاهی با سبد خرید، درگاه پرداخت، مدیریت موجودی و امکانات اختصاصی، بهدلیل پیچیدگی بیشتر، هزینه بالاتری دارد و محدوده آن میتواند از حدود ۱۰۰ میلیون تومان تا چندصد میلیون تومان باشد. برای مشاوره و استعلام قیمت پروژه خود با `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/contactPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`تماس با اپ کو`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("تماس با اپ کو")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(` در ارتباط باشید. </p><p data-v-b3ff7683> عواملی مثل تعداد محصولات، نیاز به فیلتر پیشرفته، سیستم امتیازدهی و نظرات، تخفیف و کوپن، چند فروشنده یا مارکتپلیس، و یکپارچگی با انبار یا نرمافزار حسابداری روی هزینه نهایی تأثیر مستقیم میگذارد. بهتر است قبل از شروع، لیست امکانات و اولویتها را مشخص کنید تا هم قیمت واقعبینانه بگیرید هم از اضافهکاریهای بعدی جلوگیری شود. </p><h3 data-v-b3ff7683>4. پرتال و اپلیکیشن تحت وب پیچیده</h3><p data-v-b3ff7683> پرتالها، پنلهای مدیریتی پیچیده و اپلیکیشنهای تحت وب با امکانات خاص (مثل رزرو آنلاین، عضویت و سطح دسترسی، گزارشگیری و غیره) معمولاً به صورت پروژهای قیمتگذاری میشوند و هزینه آنها بسته به scope پروژه میتواند از ۱۵۰ میلیون تومان به بالا باشد. </p><p data-v-b3ff7683> در چنین پروژههایی، معمولاً فازبندی (تحلیل، طراحی، توسعه، تست و تحویل) انجام میشود و بر اساس زمان و منابع مصرفی یا قرارداد ثابت، قیمت نهایی تعیین میشود. داشتن مستندات واضح از نیازمندیها و اولویتها به هر دو طرف کمک میکند تا در طول پروژه دچار سوءتفاهم نشوند. </p><h2 id="hidden-costs" data-v-b3ff7683>هزینههای پنهان و نگهداری سایت</h2><div class="blog-details__image-box" data-v-b3ff7683><img${ssrRenderAttr("src", _imports_1)} alt="هزینه نگهداری و بهروزرسانی سایت" data-v-b3ff7683></div><p data-v-b3ff7683> علاوه بر هزینه اولیه طراحی، باید هزینههای سالانه دامنه، هاست، امنیت و بهروزرسانی را هم در نظر بگیرید. دامنه (دامین) معمولاً سالانه مبلغی ثابت دارد. هاست بسته به ترافیک و فضای مورد نیاز میتواند از چندصد هزار تومان تا چند میلیون تومان در سال متغیر باشد. برای سایتهای حرفهای، استفاده از هاست با پشتیبانی و بکاپ منظم توصیه میشود. </p><p data-v-b3ff7683> برخی شرکتها پکیج نگهداری ماهانه یا سالانه ارائه میدهند که شامل پشتیبانی فنی، بکاپ، بهروزرسانی سیستم و رفع باگ میشود. این پکیجها به شما اطمینان خاطر میدهند که سایت همیشه در دسترس و بهروز باقی بماند. در `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/designPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`طراحی سایت اختصاصی اپ کو`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("طراحی سایت اختصاصی اپ کو")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(` میتوانید درباره گزینههای پشتیبانی و نگهداری پس از تحویل پروژه اطلاعات بگیرید. </p><h2 id="get-quote" data-v-b3ff7683>چگونه قیمت دقیق پروژه خود را بگیریم؟</h2><p data-v-b3ff7683> بهترین کار این است که نیازهای خود را (نوع سایت، تعداد صفحات، امکانات مورد نظر، مهلت تحویل) بهصورت واضح بنویسید و از چند تیم معتبر درخواست پیشفاکتور کنید. مقایسه پیشنهادها از نظر قیمت، زمان تحویل و نمونهکارها به شما کمک میکند انتخاب بهتری داشته باشید. </p><p data-v-b3ff7683> یک لیست ساده از صفحات مورد نظر (مثلاً: صفحه اصلی، درباره ما، تماس، سه صفحه خدمات، وبلاگ)، امکانات خاص (فرم، پنل کاربری، درگاه پرداخت و غیره) و ترجیح شما درباره قالب آماده یا طراحی اختصاصی، به تیم طراح کمک میکند در همان ابتدا پیشنهاد واقعبینانهای به شما بدهد. اگر در مرحله اول مطمئن نیستید، میتوانید با یک نسخه سادهتر شروع کنید و در فازهای بعدی امکانات را اضافه کنید تا هزینه اولیه قابل کنترل بماند. </p><p data-v-b3ff7683> در جلسه مشاوره، سوالات خود را درباره شامل بودن هزینه دامنه و هاست، تعداد اصلاحات در فاز طراحی، و شرایط پشتیبانی پس از تحویل بپرسید. یک پیشفاکتور شفاف باید این موارد را مشخص کند تا در میانه راه با هزینههای غیرمنتظره روبهرو نشوید. برای دریافت مشاوره رایگان و استعلام قیمت از اپ کو، از طریق `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/contactPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`صفحه تماس با ما`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("صفحه تماس با ما")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(` یا `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`صفحه اصلی`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("صفحه اصلی")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(` با ما در ارتباط باشید. </p><h2 id="conclusion" data-v-b3ff7683>نتیجهگیری</h2><p data-v-b3ff7683> هزینه طراحی سایت در ۱۴۰۵ بسته به نوع پروژه، روش اجرا (قالب آماده در مقابل اختصاصی) و امکانات مورد نظر شما متغیر است. با داشتن یک تصویر روشن از نیازها و بودجه، و مشاوره با تیم حرفهای، میتوانید پروژه را با قیمت و کیفیت مناسب پیش ببرید. </p><p data-v-b3ff7683> اپ کو آماده است تا با شفافیت کامل درباره قیمت و زمان تحویل، همراه شما در مسیر طراحی و توسعه وبسایت باشد. چه بهدنبال یک صفحه لندینگ ساده باشید چه یک فروشگاه یا پرتال پیچیده، با در میان گذاشتن اهداف خود میتوانید پیشفاکتور و برنامه اجرایی مناسبی دریافت کنید. </p><div class="blog-details__cta" data-v-b3ff7683><p data-v-b3ff7683> برای مشاوره و استعلام قیمت طراحی سایت با <strong data-v-b3ff7683>اپ کو</strong>: `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`صفحه اصلی`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("صفحه اصلی")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(` · `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/aboutPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`درباره ما`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("درباره ما")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(` · `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/contactPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`تماس با ما`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("تماس با ما")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(` · `);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/designPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`خدمات طراحی سایت`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("خدمات طراحی سایت")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</p></div><div class="blog-details__tags" data-v-b3ff7683><span data-v-b3ff7683>برچسبها:</span><a href="#" data-v-b3ff7683>هزینه طراحی سایت</a><a href="#" data-v-b3ff7683>قیمت طراحی سایت</a><a href="#" data-v-b3ff7683>طراحی سایت ۱۴۰۵</a><a href="#" data-v-b3ff7683>سایت اختصاصی</a><a href="#" data-v-b3ff7683>طراحی وب</a></div></div></div></article></div></div><div class="col-xl-4 col-lg-5" data-v-b3ff7683><div class="sidebar" data-v-b3ff7683><div class="sidebar__single sidebar__search" data-v-b3ff7683><div class="title-box" data-v-b3ff7683><h2 data-v-b3ff7683>جستجو</h2></div><form action="#" class="sidebar__search-form" data-v-b3ff7683><input type="search" placeholder="عبارت مورد نظر را وارد کنید" data-v-b3ff7683><button type="submit" data-v-b3ff7683><i class="icon-loupe" data-v-b3ff7683></i></button></form></div><div class="sidebar__single sidebar__category" data-v-b3ff7683><div class="title-box" data-v-b3ff7683><h2 data-v-b3ff7683>دستهبندی</h2></div><ul class="sidebar__category-list" data-v-b3ff7683><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: { path: "/blogPage", query: { category: "web-design" } } }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<span class="square-box" data-v-b3ff7683${_scopeId}></span> طراحی سایت`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("span", { class: "square-box" }),
|
||||
createTextVNode(" طراحی سایت")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: { path: "/blogPage", query: { category: "app-development" } } }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<span class="square-box" data-v-b3ff7683${_scopeId}></span> توسعه اپلیکیشن`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("span", { class: "square-box" }),
|
||||
createTextVNode(" توسعه اپلیکیشن")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: { path: "/blogPage", query: { category: "seo" } } }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<span class="square-box" data-v-b3ff7683${_scopeId}></span> سئو و بازاریابی`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("span", { class: "square-box" }),
|
||||
createTextVNode(" سئو و بازاریابی")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: { path: "/blogPage", query: { category: "graphic-design" } } }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<span class="square-box" data-v-b3ff7683${_scopeId}></span> طراحی گرافیک`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("span", { class: "square-box" }),
|
||||
createTextVNode(" طراحی گرافیک")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: { path: "/blogPage", query: { category: "messaging-bots" } } }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`<span class="square-box" data-v-b3ff7683${_scopeId}></span> ربات پیامرسان و اینستاگرام`);
|
||||
} else {
|
||||
return [
|
||||
createVNode("span", { class: "square-box" }),
|
||||
createTextVNode(" ربات پیامرسان و اینستاگرام")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li></ul></div><div class="sidebar__single sidebar__tag" data-v-b3ff7683><div class="title-box" data-v-b3ff7683><h2 data-v-b3ff7683>برچسبها</h2></div><ul class="sidebar__tag-list clearfix" data-v-b3ff7683><li data-v-b3ff7683><a href="#" data-v-b3ff7683>طراحی وب</a></li><li data-v-b3ff7683><a href="#" data-v-b3ff7683>هزینه طراحی سایت</a></li><li data-v-b3ff7683><a href="#" data-v-b3ff7683>سئو</a></li><li data-v-b3ff7683><a href="#" data-v-b3ff7683>سایت فروشگاهی</a></li><li data-v-b3ff7683><a href="#" data-v-b3ff7683>ربات تلگرام</a></li><li data-v-b3ff7683><a href="#" data-v-b3ff7683>بازاریابی دیجیتال</a></li></ul></div></div></div></div></div></section><footer class="footer-one footer-one__two about" data-v-b3ff7683><div class="footer-main" data-v-b3ff7683><div class="container" data-v-b3ff7683><div class="row" data-v-b3ff7683><div class="col-xl-2 col-lg-6 col-md-6 wow fadeInUp" data-wow-delay=".1s" data-v-b3ff7683><div class="single-footer-widget" data-v-b3ff7683><div class="title" data-v-b3ff7683><h3 data-v-b3ff7683>لینکهای سریع</h3></div><div class="footer-widget-links" data-v-b3ff7683><ul data-v-b3ff7683><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`خانه`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("خانه")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/aboutPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`درباره ما`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("درباره ما")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/service/servicesPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`خدمات`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("خدمات")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/service/servicesPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`نمونهکارها`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("نمونهکارها")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/blogPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`بلاگ`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("بلاگ")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li></ul></div></div></div><div class="col-xl-3 col-lg-6 col-md-6 wow fadeInUp" data-wow-delay=".2s" data-v-b3ff7683><div class="single-footer-widget ml50" data-v-b3ff7683><div class="title" data-v-b3ff7683><h3 data-v-b3ff7683>لینکهای خدمات</h3></div><div class="footer-widget-links" data-v-b3ff7683><ul data-v-b3ff7683><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/designPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`طراحی سایت`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("طراحی سایت")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/appDevelopmentPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`توسعه اپلیکیشن`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("توسعه اپلیکیشن")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/seoPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`سئو و بازاریابی`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("سئو و بازاریابی")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/graphicDesign" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`طراحی گرافیک`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("طراحی گرافیک")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/messagingBotsPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`ربات پیامرسان`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("ربات پیامرسان")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li></ul></div></div></div><div class="col-xl-4 col-lg-6 col-md-6 wow fadeInUp" data-wow-delay=".3s" data-v-b3ff7683><div class="single-footer-widget" data-v-b3ff7683><div class="title" data-v-b3ff7683><h3 data-v-b3ff7683>بلاگهای اخیر</h3></div><div class="footer-widget-blog-info" data-v-b3ff7683><ul data-v-b3ff7683><li data-v-b3ff7683><div class="footer-blog-thumb" data-v-b3ff7683><img${ssrRenderAttr("src", _imports_0$1)} alt="appco" data-v-b3ff7683></div><div class="footer-blog-text" data-v-b3ff7683><h3 data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/blog/hazine-tarahi-site-1405" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`هزینه طراحی سایت در ۱۴۰۵`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("هزینه طراحی سایت در ۱۴۰۵")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</h3><span data-v-b3ff7683><i class="fa-solid fa-calendar-days" data-v-b3ff7683></i> بهمن ۱۴۰۴</span></div></li><li data-v-b3ff7683><div class="footer-blog-thumb" data-v-b3ff7683><img${ssrRenderAttr("src", _imports_0$1)} alt="appco" data-v-b3ff7683></div><div class="footer-blog-text" data-v-b3ff7683><h3 data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/blog/chetor-branding-takhasosi-mitavanad-kasbokar-ra-motamayez-konad" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`چطور برندینگ تخصصی کسبوکار را متمایز میکند؟`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("چطور برندینگ تخصصی کسبوکار را متمایز میکند؟")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</h3><span data-v-b3ff7683><i class="fa-solid fa-calendar-days" data-v-b3ff7683></i> 16 بهمن 1403</span></div></li><li data-v-b3ff7683><div class="footer-blog-thumb" data-v-b3ff7683><img${ssrRenderAttr("src", _imports_0$1)} alt="appco" data-v-b3ff7683></div><div class="footer-blog-text" data-v-b3ff7683><h3 data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/blog/mazaye-tarahi-site-ekhtesasi" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`مزایای طراحی سایت اختصاصی`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("مزایای طراحی سایت اختصاصی")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</h3><span data-v-b3ff7683><i class="fa-solid fa-calendar-days" data-v-b3ff7683></i> 16 بهمن 1403</span></div></li></ul></div></div></div><div class="col-xl-3 col-lg-6 col-md-6 wow fadeInUp" data-wow-delay=".4s" data-v-b3ff7683><div class="single-footer-widget mt" data-v-b3ff7683><div class="title" data-v-b3ff7683><h3 data-v-b3ff7683>تماس با ما</h3></div><div class="footer-widget-contact-info" data-v-b3ff7683><ul data-v-b3ff7683><li data-v-b3ff7683><div class="icon-box" data-v-b3ff7683><span class="icon-call" data-v-b3ff7683></span></div><div class="text-box" data-v-b3ff7683><p data-v-b3ff7683><a href="tel:2512353256" data-v-b3ff7683>+880 123 45 67 89</a><br data-v-b3ff7683></p></div></li><li data-v-b3ff7683><div class="icon-box" data-v-b3ff7683><span class="icon-envelope" data-v-b3ff7683></span></div><div class="text-box" data-v-b3ff7683><p data-v-b3ff7683><a href="mailto:info@example.com" data-v-b3ff7683>yourmail@gmail.com</a><br data-v-b3ff7683></p></div></li><li data-v-b3ff7683><div class="icon-box" data-v-b3ff7683><span class="icon-pin" data-v-b3ff7683></span></div><div class="text-box" data-v-b3ff7683><p data-v-b3ff7683> ایران ، تهران خیابان ولیعصر <br data-v-b3ff7683> خیابان هاشمی فر </p></div></li></ul></div></div></div></div></div></div><div class="footer-bottom" data-v-b3ff7683><div class="container" data-v-b3ff7683><div class="footer-bottom__inner" data-v-b3ff7683><div class="row align-items-center" data-v-b3ff7683><div class="col-xl-6 col-lg-6" data-v-b3ff7683><div class="copyright-text" data-v-b3ff7683><p data-v-b3ff7683>fatemeh-kazemi.ir 2024 | تمامی حقوق محفوظ است</p></div></div><div class="col-xl-6 col-lg-6 text-end" data-v-b3ff7683><div class="copyright-menu" data-v-b3ff7683><ul data-v-b3ff7683><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/aboutPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`قوانین و شرایط`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("قوانین و شرایط")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/aboutPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`سیاست حریم خصوصی`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("سیاست حریم خصوصی")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li><li data-v-b3ff7683>`);
|
||||
_push(ssrRenderComponent(_component_NuxtLink, { to: "/contactPage" }, {
|
||||
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
||||
if (_push2) {
|
||||
_push2(`تماس با ما`);
|
||||
} else {
|
||||
return [
|
||||
createTextVNode("تماس با ما")
|
||||
];
|
||||
}
|
||||
}),
|
||||
_: 1
|
||||
}, _parent));
|
||||
_push(`</li></ul></div></div></div></div></div></div></footer></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("main/mainPage/components/BlogDetailsPagePricing.vue");
|
||||
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
||||
};
|
||||
const BlogDetailsPagePricing = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-b3ff7683"]]);
|
||||
const articleTitle = "هزینه طراحی سایت در ۱۴۰۵ — راهنمای کامل قیمتگذاری | اپ کو";
|
||||
const articleDescription = "یکی از پرتکرارترین سوالات قبل از سفارش طراحی سایت این است: هزینه طراحی سایت چقدر است؟ پاسخ به عوامل زیادی بستگی دارد؛ از نوع سایت و تعداد صفحات تا امکانات اختصاصی و تیم طراح. در این مقاله راهنمای کامل قیمت طراحی سایت در سال ۱۴۰۵ را مرور میکنیم: عوامل مؤثر بر هزینه، محدودهٔ تقریبی برای سایت با قالب آماده، شرکتی، فروشگاهی و پرتال، هزینههای پنهان و نگهداری، و نحوهٔ دریافت پیشفاکتور دقیق. در اپ کو (AppCo) شفافیت در قیمتگذاری و مشاوره قبل از شروع پروژه اولویت ماست تا با بودجه و انتظارات واقعبینانه وارد پروژه شوید.";
|
||||
const articleUrl = "https://appco.app/blog/hazine-tarahi-site-1405";
|
||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||
__name: "hazine-tarahi-site-1405",
|
||||
__ssrInlineRender: true,
|
||||
setup(__props) {
|
||||
useSeoMeta({
|
||||
title: articleTitle,
|
||||
description: articleDescription,
|
||||
ogTitle: articleTitle,
|
||||
ogDescription: articleDescription,
|
||||
ogType: "article",
|
||||
ogImage: "/assets/img/weblog/Exclusive website design.webp",
|
||||
twitterCard: "summary_large_image",
|
||||
articleAuthor: "اپ کو (AppCo)",
|
||||
articlePublishedTime: "2025-02-01T10:00:00+03:30",
|
||||
articleModifiedTime: "2025-02-01T10:00:00+03:30",
|
||||
articleTag: ["هزینه طراحی سایت", "قیمت طراحی سایت", "طراحی سایت ۱۴۰۵", "سایت اختصاصی", "طراحی وب"]
|
||||
});
|
||||
useHead({
|
||||
link: [
|
||||
{
|
||||
rel: "canonical",
|
||||
href: articleUrl
|
||||
}
|
||||
],
|
||||
script: [
|
||||
{
|
||||
type: "application/ld+json",
|
||||
children: JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BlogPosting",
|
||||
headline: articleTitle,
|
||||
description: articleDescription,
|
||||
image: "https://appco.app/assets/img/weblog/Exclusive website design.webp",
|
||||
datePublished: "2025-02-01T10:00:00+03:30",
|
||||
dateModified: "2025-02-01T10:00:00+03:30",
|
||||
author: {
|
||||
"@type": "Organization",
|
||||
name: "اپ کو (AppCo)",
|
||||
url: "https://appco.app"
|
||||
},
|
||||
publisher: {
|
||||
"@type": "Organization",
|
||||
name: "اپ کو (AppCo)",
|
||||
logo: {
|
||||
"@type": "ImageObject",
|
||||
url: "https://appco.app/assets/img/resource/logo-1.webp"
|
||||
}
|
||||
},
|
||||
mainEntityOfPage: {
|
||||
"@type": "WebPage",
|
||||
"@id": articleUrl
|
||||
},
|
||||
inLanguage: "fa-IR",
|
||||
keywords: ["هزینه طراحی سایت", "قیمت طراحی سایت", "طراحی سایت ۱۴۰۵", "سایت اختصاصی", "طراحی وب", "سایت فروشگاهی"]
|
||||
})
|
||||
}
|
||||
]
|
||||
});
|
||||
return (_ctx, _push, _parent, _attrs) => {
|
||||
_push(ssrRenderComponent(BlogDetailsPagePricing, _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/blog/hazine-tarahi-site-1405.vue");
|
||||
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
||||
};
|
||||
|
||||
export { _sfc_main as default };
|
||||
//# sourceMappingURL=hazine-tarahi-site-1405-DrE61TuE.mjs.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"hazine-tarahi-site-1405-DrE61TuE.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/hazine-tarahi-site-1405-DrE61TuE.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
|
||||
@@ -1,25 +0,0 @@
|
||||
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 _ };
|
||||
@@ -1,476 +0,0 @@
|
||||
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 };
|
||||
@@ -1,152 +0,0 @@
|
||||
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 _ };
|
||||
@@ -1,46 +0,0 @@
|
||||
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 };
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,701 +0,0 @@
|
||||
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_2, 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-Dqb4rG_N.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_2,
|
||||
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 _ };
|
||||
@@ -1,46 +0,0 @@
|
||||
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 };
|
||||
@@ -1,87 +0,0 @@
|
||||
import { defineComponent, useSSRContext } from 'vue';
|
||||
import { ssrRenderComponent } from 'vue/server-renderer';
|
||||
import { _ as _sfc_main$1 } from './index-73jOE-zu.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-9PHHD2E-.mjs';
|
||||
import './close_light-DbrEdRZI.mjs';
|
||||
import './FormItem-Dqb4rG_N.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-CPpat_WT.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 };
|
||||
@@ -1,666 +0,0 @@
|
||||
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 };
|
||||
@@ -1,457 +0,0 @@
|
||||
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_2 } from './FormItem-Dqb4rG_N.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_2;
|
||||
_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 };
|
||||
@@ -1,46 +0,0 @@
|
||||
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 };
|
||||
@@ -1,540 +0,0 @@
|
||||
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-9PHHD2E-.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-CPpat_WT.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-Dqb4rG_N.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 };
|
||||
@@ -1,49 +0,0 @@
|
||||
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 };
|
||||
@@ -1,890 +0,0 @@
|
||||
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 };
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user