from flask import jsonify from werkzeug.wrappers import Response import document_engine from core.flask_app import app @app.route("/document//render") def document_render(slug: str) -> Response: """Rendu HTML complet et à jour du document — appelé par le moteur de layout côté client après toute mutation structurelle (ajout/déplacement/ suppression) pour reconstruire le canevas depuis la vérité serveur (recalcul réel des rangées, jamais une simple retouche DOM locale, voir docs/plan/PLAN.md — "recalcul au déplacement"). `elements` est revalidé (document_engine.sanitize_element_attributes) avant d'être renvoyé au client — même raison que routes/document/ document_edit.py : le panneau Propriétés reçoit `data.elements` directement depuis cette route à chaque rafraîchissement du canevas.""" elements = [ {**el, "attributes": document_engine.sanitize_element_attributes(el["kind"], el["attributes"])} for el in document_engine.list_document_elements(slug) ] return jsonify({"html": document_engine.render_document(elements), "elements": elements})