import { defineComponent, computed, ref, reactive, createVNode, resolveDynamicComponent, unref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrInterpolate, ssrRenderList, ssrRenderClass, ssrRenderVNode, ssrRenderAttr, ssrIncludeBooleanAttr, ssrRenderComponent, ssrLooseContain, ssrRenderTeleport, ssrRenderStyle } from 'vue/server-renderer';
import { a as useI18n } from './server.mjs';
import { _ as _sfc_main$2 } from './SharedAddressForm-rsg7wrlQ.mjs';
import { u as useCategories, _ as _sfc_main$3 } from './useCategories-CDBFMe6d.mjs';
import { useRoute, useRouter } from 'vue-router';
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 'pinia';
import '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'unhead/plugins';
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
__name: "TreeNode",
__ssrInlineRender: true,
props: {
node: {},
selectedIds: {},
expandedIds: {}
},
emits: ["toggle", "toggle-expand"],
setup(__props) {
var _a;
let currentLocale = "hu";
try {
const i18n = useI18n();
currentLocale = ((_a = i18n.locale) == null ? void 0 : _a.value) || i18n.locale || "hu";
} catch {
}
function resolveNodeLabel(node) {
var _a2, _b;
if ((_a2 = node.name_i18n) == null ? void 0 : _a2[currentLocale]) {
return node.name_i18n[currentLocale];
}
if ((_b = node.name_i18n) == null ? void 0 : _b.hu) {
return node.name_i18n.hu;
}
if (node.name_hu) {
return node.name_hu;
}
return node.key;
}
return (_ctx, _push, _parent, _attrs) => {
var _a2;
const _component_TreeNode = _sfc_main$1;
_push(`
`);
if (__props.expandedIds.has(__props.node.id) && ((_a2 = __props.node.children) == null ? void 0 : _a2.length)) {
_push(`
`);
ssrRenderList(__props.node.children, (child) => {
_push(`
`);
_push(ssrRenderComponent(_component_TreeNode, {
node: child,
"selected-ids": __props.selectedIds,
"expanded-ids": __props.expandedIds,
onToggle: (id) => _ctx.$emit("toggle", id),
onToggleExpand: (id) => _ctx.$emit("toggle-expand", id)
}, null, _parent));
_push(`
`);
});
_push(`
`);
} else {
_push(``);
}
_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/TreeNode.vue");
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
};
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "edit",
__ssrInlineRender: true,
setup(__props) {
var _a;
const { t } = useI18n();
let currentLocale = "hu";
try {
const i18n = useI18n();
currentLocale = ((_a = i18n.locale) == null ? void 0 : _a.value) || i18n.locale || "hu";
} catch {
}
function resolveNodeLabel(node) {
var _a2, _b;
if ((_a2 = node.name_i18n) == null ? void 0 : _a2[currentLocale]) {
return node.name_i18n[currentLocale];
}
if ((_b = node.name_i18n) == null ? void 0 : _b.hu) {
return node.name_i18n.hu;
}
if (node.name_hu) {
return node.name_hu;
}
return node.key;
}
const VEHICLE_CLASSES = [
{ key: "car", label: t("providers.detail_vehicle_class_car") },
{ key: "motorcycle", label: t("providers.detail_vehicle_class_motorcycle") },
{ key: "truck", label: t("providers.detail_vehicle_class_truck") },
{ key: "hgv", label: t("providers.detail_vehicle_class_hgv") },
{ key: "light_commercial", label: t("providers.detail_vehicle_class_light_commercial") },
{ key: "personal", label: t("providers.detail_vehicle_class_personal") },
{ key: "boat", label: t("providers.detail_vehicle_class_boat") },
{ key: "other", label: t("providers.detail_vehicle_class_other") }
];
const route = useRoute();
useRouter();
const providerId = computed(() => Number(route.params.id));
const { getCategoryName, getCategoryParentId } = useCategories();
const loading = ref(true);
const error = ref(false);
const provider = ref(null);
const saveLoading = ref(false);
const toast = ref(null);
const isRawDataDrawerOpen = ref(false);
const drawerWidth = ref(512);
ref(false);
const activeTab = ref("basic");
const tabs = [
{ key: "basic", label: t("providers.edit_tab_basic"), icon: "svg" },
{ key: "matrix", label: t("providers.edit_tab_matrix"), icon: "svg" },
{ key: "location", label: t("providers.edit_tab_location"), icon: "svg" },
{ key: "hours", label: t("providers.edit_tab_hours"), icon: "svg" }
];
const categoryTree = ref([]);
const treeLoading = ref(false);
const expandedNodes = ref(/* @__PURE__ */ new Set());
const brandInput = ref("");
const propulsionInput = ref("");
const form = reactive({
name: "",
category: "",
contact_phone: "",
contact_email: "",
website: "",
plus_code: "",
status: "active",
supported_vehicle_classes: [],
category_ids: [],
/** CRITICAL: specializations MUST be an object with brands and propulsion arrays */
specializations: {
brands: [],
propulsion: []
},
/** CRITICAL: opening_hours MUST be an object (not null) */
opening_hours: {},
/** CRITICAL: address MUST be a fully initialized object */
address: {
zip: null,
city: null,
street_name: null,
street_type: null,
house_number: null,
stairwell: null,
floor: null,
door: null,
parcel_id: null,
full_address_text: null,
latitude: null,
longitude: null
},
is_always_open: false
});
const DAYS = [
{ key: "monday", label: t("providers.detail_day_monday") },
{ key: "tuesday", label: t("providers.detail_day_tuesday") },
{ key: "wednesday", label: t("providers.detail_day_wednesday") },
{ key: "thursday", label: t("providers.detail_day_thursday") },
{ key: "friday", label: t("providers.detail_day_friday") },
{ key: "saturday", label: t("providers.detail_day_saturday") },
{ key: "sunday", label: t("providers.detail_day_sunday") }
];
const trustScoreBadgeClass = computed(() => {
var _a2;
const score = (_a2 = provider.value) == null ? void 0 : _a2.trust_score;
if (score === null || score === void 0) return "bg-slate-700 text-slate-400";
if (score > 80) return "bg-emerald-500/20 text-emerald-400 border border-emerald-500/30";
if (score > 50) return "bg-amber-500/20 text-amber-400 border border-amber-500/30";
return "bg-rose-500/20 text-rose-400 border border-rose-500/30";
});
const hasChanges = computed(() => {
var _a2, _b;
if (!provider.value) return false;
const p = provider.value;
if (form.name !== p.name) return true;
if (form.category !== (p.category || "")) return true;
if (form.contact_phone !== (p.contact_phone || "")) return true;
if (form.contact_email !== (p.contact_email || "")) return true;
if (form.website !== (p.website || "")) return true;
if (form.plus_code !== (p.plus_code || "")) return true;
const origClasses = p.supported_vehicle_classes || [];
if (JSON.stringify(form.supported_vehicle_classes.slice().sort()) !== JSON.stringify([...origClasses].sort())) return true;
const origCats = p.category_ids || [];
if (JSON.stringify(form.category_ids.slice().sort()) !== JSON.stringify([...origCats].sort())) return true;
const origSpec = p.specializations || {};
const formSpec = form.specializations || {};
if (JSON.stringify(formSpec.brands || []) !== JSON.stringify(origSpec.brands || [])) return true;
if (JSON.stringify(formSpec.propulsion || []) !== JSON.stringify(origSpec.propulsion || [])) return true;
const origHours = p.opening_hours || {};
const formHours = form.opening_hours || {};
const allDays = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
for (const day of allDays) {
const o = origHours[day];
const f = formHours[day];
if (!o && !f) continue;
if (!o || !f) return true;
if (o.open !== f.open || o.close !== f.close) return true;
}
const addr = p.address_detail || {};
const fAddr = form.address;
if (fAddr.zip !== (addr.zip || addr.address_zip || null)) return true;
if (fAddr.city !== (addr.city || null)) return true;
if (fAddr.street_name !== (addr.street_name || addr.address_street_name || null)) return true;
if (fAddr.street_type !== (addr.street_type || addr.address_street_type || null)) return true;
if (fAddr.house_number !== (addr.house_number || addr.address_house_number || null)) return true;
if (fAddr.stairwell !== (addr.stairwell || null)) return true;
if (fAddr.floor !== (addr.floor || null)) return true;
if (fAddr.door !== (addr.door || null)) return true;
if (fAddr.parcel_id !== (addr.parcel_id || null)) return true;
if (fAddr.full_address_text !== (addr.full_address_text || null)) return true;
if (fAddr.latitude !== ((_a2 = addr.latitude) != null ? _a2 : null)) return true;
if (fAddr.longitude !== ((_b = addr.longitude) != null ? _b : null)) return true;
return false;
});
function isCategorySelected(id) {
return form.category_ids.includes(id);
}
function toggleCategory(id) {
const idx = form.category_ids.indexOf(id);
if (idx === -1) {
form.category_ids.push(id);
const parentId = getCategoryParentId(id);
if (parentId !== null && parentId !== void 0 && !form.category_ids.includes(parentId)) {
form.category_ids.push(parentId);
console.log(
"P0 AUTO-PARENT: Child category #" + id + " selected, auto-added parent #" + parentId
);
}
} else {
form.category_ids.splice(idx, 1);
}
}
function toggleTreeNode(id) {
const newSet = new Set(expandedNodes.value);
if (newSet.has(id)) {
newSet.delete(id);
} else {
newSet.add(id);
}
expandedNodes.value = newSet;
}
return (_ctx, _push, _parent, _attrs) => {
var _a2, _b, _c;
const _component_TreeNode = _sfc_main$1;
const _component_SharedAddressForm = _sfc_main$2;
const _component_RawDataViewer = _sfc_main$3;
_push(`${ssrInterpolate(_ctx.$t("providers.edit_title"))}
${ssrInterpolate(((_a2 = provider.value) == null ? void 0 : _a2.name) || _ctx.$t("providers.detail_provider_number", { id: providerId.value }))}
`);
if (loading.value) {
_push(`
${ssrInterpolate(_ctx.$t("providers.edit_loading"))} `);
} else if (error.value) {
_push(`
${ssrInterpolate(_ctx.$t("providers.edit_error"))}
`);
} else if (!provider.value) {
_push(`
${ssrInterpolate(_ctx.$t("providers.edit_not_found"))}
`);
} else {
_push(`
`);
if (activeTab.value === "basic") {
_push(`
`);
} else {
_push(``);
}
if (activeTab.value === "matrix") {
_push(`
${ssrInterpolate(_ctx.$t("providers.edit_section_matrix"))}
${ssrInterpolate(_ctx.$t("providers.edit_section_matrix_desc"))}
B ${ssrInterpolate(_ctx.$t("providers.edit_section_expertise_tags"))}
${ssrInterpolate(_ctx.$t("providers.edit_section_expertise_tags_desc"))}
`);
if (treeLoading.value) {
_push(`
${ssrInterpolate(_ctx.$t("providers.edit_categories_loading"))} `);
} else {
_push(`
`);
ssrRenderList(categoryTree.value, (node) => {
var _a3;
_push(`
`);
if (expandedNodes.value.has(node.id) && ((_a3 = node.children) == null ? void 0 : _a3.length)) {
_push(`
`);
ssrRenderList(node.children, (child) => {
_push(`
`);
_push(ssrRenderComponent(_component_TreeNode, {
node: child,
"selected-ids": form.category_ids,
"expanded-ids": expandedNodes.value,
onToggle: toggleCategory,
onToggleExpand: toggleTreeNode
}, null, _parent));
_push(`
`);
});
_push(`
`);
} else {
_push(``);
}
_push(`
`);
});
_push(`
`);
}
if (form.category_ids.length > 0) {
_push(`
`);
ssrRenderList(form.category_ids, (id) => {
_push(`
${ssrInterpolate(unref(getCategoryName)(id))} `);
});
_push(`
`);
} else {
_push(``);
}
_push(`
C ${ssrInterpolate(_ctx.$t("providers.edit_section_specializations"))}
${ssrInterpolate(_ctx.$t("providers.edit_section_specializations_desc"))}
`);
ssrRenderList(((_b = form.specializations) == null ? void 0 : _b.brands) || [], (brand, idx) => {
_push(`
${ssrInterpolate(brand)} `);
});
_push(`
`);
ssrRenderList(((_c = form.specializations) == null ? void 0 : _c.propulsion) || [], (prop, idx) => {
_push(`
${ssrInterpolate(prop)} `);
});
_push(`
`);
} else {
_push(``);
}
if (activeTab.value === "location") {
_push(`
`);
} else {
_push(``);
}
if (activeTab.value === "hours") {
_push(`
${ssrInterpolate(_ctx.$t("providers.edit_section_opening_hours"))}
${ssrInterpolate(_ctx.$t("providers.edit_section_opening_hours_desc"))}
`);
ssrRenderList(DAYS, (day) => {
var _a3, _b2, _c2, _d, _e, _f, _g;
_push(`
`);
});
_push(`
`);
} else {
_push(``);
}
_push(`
`);
if (hasChanges.value) {
_push(`${ssrInterpolate(_ctx.$t("providers.edit_has_changes"))}`);
} else {
_push(`${ssrInterpolate(_ctx.$t("providers.edit_no_changes"))}`);
}
_push(`
`);
}
if (toast.value) {
_push(`
${ssrInterpolate(toast.value.message)}
`);
} else {
_push(``);
}
ssrRenderTeleport(_push, (_push2) => {
var _a3, _b2, _c2, _d, _e, _f, _g;
if (isRawDataDrawerOpen.value) {
_push2(`
\u{1F916} ${ssrInterpolate(_ctx.$t("providers.edit_raw_data"))}
${ssrInterpolate(_ctx.$t("providers.edit_source_label"))}${ssrInterpolate(((_a3 = provider.value) == null ? void 0 : _a3.source) || "\u2014")}
${ssrInterpolate(_ctx.$t("providers.edit_trust_score_label"))}${ssrInterpolate((_c2 = (_b2 = provider.value) == null ? void 0 : _b2.trust_score) != null ? _c2 : "\u2014")}
${ssrInterpolate(_ctx.$t("providers.edit_raw_data_title"))}
`);
_push2(ssrRenderComponent(_component_RawDataViewer, {
data: (_d = provider.value) == null ? void 0 : _d.raw_data
}, null, _parent));
_push2(`
`);
if (((_e = provider.value) == null ? void 0 : _e.audit_trail) && Object.keys(provider.value.audit_trail).length > 0) {
_push2(`
${ssrInterpolate(_ctx.$t("providers.edit_audit_trail_title"))}
`);
_push2(ssrRenderComponent(_component_RawDataViewer, {
data: (_f = provider.value) == null ? void 0 : _f.audit_trail
}, null, _parent));
_push2(`
`);
} else {
_push2(``);
}
if ((_g = provider.value) == null ? void 0 : _g.rejection_reason) {
_push2(`
${ssrInterpolate(_ctx.$t("providers.edit_rejection_reason_title"))}
${ssrInterpolate(provider.value.rejection_reason)}
`);
} else {
_push2(``);
}
_push2(`
`);
} else {
_push2(``);
}
}, "body", false, _parent);
_push(`
`);
};
}
});
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/providers/[id]/edit.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const edit = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1a169f11"]]);
export { edit as default };
//# sourceMappingURL=edit-DI1cu9GQ.mjs.map