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(`

${ssrInterpolate(_ctx.$t("providers.edit_section_basic"))}

${ssrInterpolate(provider.value.source)}

${ssrInterpolate(_ctx.$t("providers.edit_section_contact"))}

`); } else { _push(``); } if (activeTab.value === "matrix") { _push(`

${ssrInterpolate(_ctx.$t("providers.edit_section_matrix"))}

${ssrInterpolate(_ctx.$t("providers.edit_section_matrix_desc"))}

A ${ssrInterpolate(_ctx.$t("providers.edit_section_vehicle_classes"))}

${ssrInterpolate(_ctx.$t("providers.edit_section_vehicle_classes_desc"))}

`); ssrRenderList(VEHICLE_CLASSES, (vc) => { _push(``); }); _push(`

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(`
${ssrInterpolate(_ctx.$t("providers.edit_field_add"))}
`); ssrRenderList(((_c = form.specializations) == null ? void 0 : _c.propulsion) || [], (prop, idx) => { _push(`${ssrInterpolate(prop)} `); }); _push(`
${ssrInterpolate(_ctx.$t("providers.edit_field_add"))}
`); } else { _push(``); } if (activeTab.value === "location") { _push(`
`); if (form.address) { _push(ssrRenderComponent(_component_SharedAddressForm, { modelValue: form.address, "onUpdate:modelValue": ($event) => form.address = $event }, null, _parent)); } else { _push(``); } _push(`

${ssrInterpolate(_ctx.$t("providers.edit_section_location_extra"))}

`); } 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(`
`); if ((_c2 = form.opening_hours) == null ? void 0 : _c2[day.key]) { _push(`
\u2013
`); } else { _push(`${ssrInterpolate(_ctx.$t("providers.edit_closed"))}`); } _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 (saveLoading.value) { _push(``); } else { _push(``); } _push(` ${ssrInterpolate(_ctx.$t("providers.edit_save"))}
`); } 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